web-dev-qa-db-ja.com

SSHおよびSCPに対する.pemファイルの適切なファイル権限は何ですか

AWS UbuntuサーバーにSSH接続し、ディレクトリをローカルマシンにコピーしようとしました。プロセス全体を通じて、さまざまなファイル権限エラーが発生します(以下に記載)。

SSHとSCPを許可する.pemファイルに必要な特定のファイル権限はありますか?
それとも、ファイルのアクセス許可を2回変更する必要がありますか-ログイン後にSSHとSCPに1回ずつ変更しますか?

これは私が使用しているコマンドです:

SSH:

ssh -i sentiment.pem [email protected]

リモートからローカルコンピュータにコピーする:

scp [email protected]:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Mac OS X 10.7.5を使用しています。


試行錯誤:

1.)最初に.pemファイルをダウンロードした後、その権限は次のように設定されました:0644

-rw-r--r-@ 1 Togaスタッフ1692 2月18日21:27 sentiment.pem

次に、ターミナルを介してSSHを試行し、次のメッセージを受け取りました。

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

2.)ファイルの権限を次のように更新しました:chmod 660 sentiment.pem

更新後、権限は次のように設定されました。

-rw-rw ---- @ 1 Toga staff 1692 Feb 18 21:27 sentiment.pem

次に、ターミナルを介してSSHを試行し、次のメッセージを受け取りました。

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

3.)ファイルのアクセス許可を次のように更新しました:chmod 600 sentiment.pem

更新後、権限は次のように設定されました。

-rw ------- @ 1 Toga staff 1692 Feb 18 21:27 sentiment.pem

その後、ターミナルを介してSSHを試行し、成功しました!!

4.)ログインしたら、コマンドを実行して、次のコマンドでリモートディレクトリをローカルコンピュータにコピーします。

scp [email protected]:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

どちらが戻ります:

Permission denied (publickey).

試行されたSCPコマンド:

1.)コマンド-iを追加し、.pemファイルを参照します。

scp -i sentiment.pem [email protected]:/ home/ubuntu/sentimentfolder/Users/Toga/Desktop/sentimentlocal

2.)コマンド-iを追加し、.pemファイルを参照して、AWSのユーザーをec2-userに変更しました。

scp -i sentiment.pem [email protected]:/ home/ubuntu/sentimentfolder/Users/Toga/Desktop/sentimentlocal

3.)コマンド-iを追加し、.pemファイルを参照し、AWSのユーザーをec2-userに変更し、.pemファイルの場所の完全なファイルパスを追加しました。

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem [email protected]:/ home/ubuntu/sentiment/Users/Toga/Desktop/sentimentlocal

81
George Jester

ここにアクセス SSHを使用してAmazon EC2にリモート接続する方法 または以下を参照してください。

SSHを使用してAmazon EC2にリモート接続する方法:

  1. .pemファイルをダウンロードします。
  2. Amazonダッシュボードで、左側のサイドバーから[インスタンス]を選択し、接続するインスタンスを選択します。
  3. 「アクション」をクリックし、「接続」を選択します
  4. 「スタンドアロンSSHクライアントで接続」をクリックします
  5. ターミナルウィンドウを開く
  6. ディレクトリを作成します。

    # mkdir -p ~/.ssh
    
  7. ダウンロードした.pemファイルを、作成した.sshディレクトリに移動します。

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. .pemファイルの権限を変更して、rootユーザーのみがファイルを読み取れるようにします。

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. 構成ファイルを作成します。

    # vim ~/.ssh/config
    

    その構成ファイルに次のテキストを入力します。

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    そのファイルを保存します。

  10. パブリックDNSホスト名を指定してsshコマンドを使用し、インスタンスに接続します。
    例えば。:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    
126
Babin Lonston

chmod 400 {keyfile}.pemは、Amazonが指示したものであり、機能します。

21
John Zhang
chmod 0400 pemfile.pem

そして

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name
5
harsha konreddy

IPアドレスではなく、SCPコマンドでのシステムの完全なホスト名を使用する必要があるようです。 AWSドキュメントでは、これについて http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html のセクション「Linux/UnixからLinux/Unixインスタンスへのファイルの転送SCP」。

そして-rはディレクトリをコピーします。

また、デフォルトのユーザー名は画像によって異なります。

Amazon Linuxの場合、デフォルトのユーザー名はec2-user。 RHEL5の場合、ユーザー名はしばしばrootですが、ec2-user。 Ubuntuの場合、ユーザー名はubuntuです。 SUSE Linuxの場合、ユーザー名はrootです。それ以外の場合は、AMIプロバイダーに確認してください。

したがって、次のコマンドを使用します。

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem [email protected]:~/sentiment /Users/Toga/Desktop/sentimentlocal
3
daniel kullmann

「Permission denied(publickey)」はリモートサーバーからのものであるため、間違ったキーを使用しているか、接続が許可されていないか、リモートのauthorized_keysファイルにタイプミスがあります。

2
maedox