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
ここにアクセス SSHを使用してAmazon EC2にリモート接続する方法 または以下を参照してください。
SSHを使用してAmazon EC2にリモート接続する方法:
ディレクトリを作成します。
# mkdir -p ~/.ssh
ダウンロードした.pemファイルを、作成した.sshディレクトリに移動します。
# mv ~/Downloads/ec2private.pem ~/.ssh
.pemファイルの権限を変更して、rootユーザーのみがファイルを読み取れるようにします。
# chmod 400 ~/.ssh/ec2private.pem
構成ファイルを作成します。
# vim ~/.ssh/config
その構成ファイルに次のテキストを入力します。
Host *amazonaws.com
IdentityFile ~/.ssh/ec2private.pem
User ec2-user
そのファイルを保存します。
パブリックDNSホスト名を指定してsshコマンドを使用し、インスタンスに接続します。
例えば。:
# ssh ec2-54-23-23-23-34.example.amazonaws.com
chmod 400 {keyfile}.pem
は、Amazonが指示したものであり、機能します。
chmod 0400 pemfile.pem
そして
ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name
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
「Permission denied(publickey)」はリモートサーバーからのものであるため、間違ったキーを使用しているか、接続が許可されていないか、リモートのauthorized_keysファイルにタイプミスがあります。