SSHおよびSCPに対する.pemファイルの正しいファイル許可は何ですか


69

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

.pemファイルにSSHとSCPを許可する特定のファイル許可が必要ですか?
または、ファイルのアクセス許可を2回変更する必要がありますか?ログイン後に1回はSSHに、もう1回はSCPに変更しますか?

私が使用しているコマンドは次のとおりです。

SSH:

ssh -i sentiment.pem Todo@54.555.555.555

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

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

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


試行錯誤:

1.).pemファイルを最初にダウンロードした後、そのアクセス許可は次のように設定されています:0644

-rw-r--r-@ 1 Toga staff 1692 Feb 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 Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

返されるもの:

Permission denied (publickey).

試行されるSCPコマンド:

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

scp -i sentiment.pem Todo@54.555.555.555:/ home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

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

scp -i sentiment.pem ec2-user@54.555.555.555:/ home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

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

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ec2-user@54.555.555.555:/ home / ubuntu / sentiment / Users / Toga / Desktop / sentimentlocal


scpに.pemファイルも使用するように指示する必要があります
ダニエルクルマン14

意味のある@danielkullmannを呼び出してくれてありがとう。.pemファイルを直接参照するコマンドの組み合わせを試しましたが、まだ何も機能していません。「SCPコマンド試行」というタイトルのセクションで質問を更新し、試したことをカタログ化しました。別のコマンドを使用する場合は、お知らせください。ありがとうございました。
ジョージジェスター14

回答:


110

こちらをご覧ください。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
    

1
私は好奇心が強い:なぜ下票ですか?
エリック14

1
私はこれに反対票を投じませんでした。これは実際に役立つように見えますが、リモートからローカルコンプにscpする必要があるときに問題が解決するかどうかはわかりません。これを試して、何が起こるか見てみましょう。ありがとう、Babin。
ジョージジェスター14

ディレクトリ全体とその内容をコピーするときは、を使用しますscp -r
バハマ14

1
素晴らしい答え。pemが動き回らないようにするには、ssh -iフラグを使用して、使用する公開キーを指定します。例:ssh -i path / to / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34

15

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


これは私が探していた答えです、受け入れられた答えの指示はすべて良い習慣です...しかし、問題とは無関係です。
サリンク

3

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

そして、-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 ubuntu@ec2-xx-xx-xx-xx.compute-x.amazonaws.com:~/sentiment /Users/Toga/Desktop/sentimentlocal

1
正しいユーザー名を使用するための良いスマックリマインダー。上記のエラーを取得し、ubuntuインスタンスでubuntuユーザーを使用することを忘れないでください。
md_rasler

2

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


2
chmod 0400 pemfile.pem

そして

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

3
sshコマンドを説明してください(また、可能であれば参照も提供してください)。ところで、chmod 4009か月前の回答で提供されました。
スコット14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.