AWSにscpでファイル転送したらPermission deniedされてググった
AWSにWordpressをインストールできたので今回はEC2サーバーにファイル転送をするところまで。
少しつまずいたので、その解決策も含めてご紹介します。
EC2にssh接続をしてみる
まずはダウンロードしたpemファイルを任意のディレクトリにコピー。
$ cp blog_sample.pem ~/.ssh/blog_sample.pem
ssh接続をしてみます。
「ssh -i {.pemファイル} ec2-user@{Public DNS}」で接続できます。
Public DNSはAWSのコンソールの以下の赤枠のところで確認できます。
$ ssh -i ~/.ssh/blog_sample.pem ec2-user@ec2-54-199-188-193.ap-northeast-1.compute.amazonaws.com
The authenticity of host 'ec2-54-199-188-193.ap-northeast-1.compute.amazonaws.com (54.199.188.193)' can't be established.
RSA key fingerprint is 1b:10:ae:e5:9e:60:ad:01:83:32:ca:ef:97:0a:68:93.
Are you sure you want to continue connecting (yes/no)?
このような画面が出るので、yesと入力してEnterします。 すると以下の様なエラーが出てしまいました。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/yuichi.iwayama/.ssh/blog_sample.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/yuichi.iwayama/.ssh/blog_sample.pem
Permission denied (publickey).
pemファイル(Private Key Files)のアクセス権限がオープンすぎると怒られてしまいました。
なので、chmodでアクセス権限を変更して再度ssh接続します。
$ chmod 400 ~/.ssh/blog_sample.pem
$ ssh -i ~/.ssh/blog_sample.pem ec2-user@ec2-54-199-188-193.ap-northeast-1.compute.amazonaws.com
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2013.09-release-notes/
↑のような表示が出てssh接続ができました。
ssh接続できることが確認できたので、一旦接続を切ります。
$ exit
sshのconfigに設定を追加 毎回長いコマンドを打つのは面倒なので、設定をします。
sudo vi ~/.ssh/config
viで以下のように追記します。
Host blog_sample
User ec2-user
HostName ec2-54-199-188-193.ap-northeast-1.compute.amazonaws.com
Port 22
IdentityFile ~/.ssh/blog_sample.pem
これで上書き保存すると、
ssh blog_sample
とするだけでssh接続ができるようになります。
問題:EC2にscpでファイル転送するとpermission deniedとなる
ここまでできたところで、ファイル転送をしてみます。 Macの場合は、ターミナルからscpコマンドでファイル転送をすることができます。
AWSの公式マニュアルどおりにターミナルからscpでファイル転送をしてみます。 インストールしたWordPressのthemes以下に新しいテーマ(sampleディレクトリ)を転送してみましょう。
$ sudo scp -i ~/.ssh/blog_sample.pem -r sample ec2-user@ec2-54-199-188-193.ap-northeast-1.compute.amazonaws.com:/var/www/vhosts/i-fefef5f8/wp-content/themes
scp: /var/www/vhosts/i-fefef5f8/wp-content/themes/sample: Permission denied
* i-fefef5f8はインスタンスID
Permission deniedととなり転送ができない。
解決策:chmodで権限を変更する
ただの権限のエラーだったので、chmodコマンドですべてのユーザーがアクセスできるように権限を変更してexit。
$ ssh blog_sample
$ cd /var/www/vhosts/
$ sudo chmod -R 777 i-fefef5f8
$ exit
これでもう一度ファイル転送をしてみると。
$ sudo scp -i ~/.ssh/blog_sample.pem -r sample ec2-user@ec2-54-199-188-193.ap-northeast-1.compute.amazonaws.com:/var/www/vhosts/i-fefef5f8/wp-content/themes
sample.txt 100% 0 0.0KB/s 00:00
転送できた!
[amazonjs asin=“B00UWCYRZK” locale=“JP” title=“Amazon Web Services パターン別構築・運用ガイド 一番大切な知識と技術が身につく”]