AWS EC2へのscpでPermission Denied
scpを使ってローカルからAWS EC2インスタンスへpemファイルを送るときにPermission Deniedが発生した。
% scp -i ~/.ssh/ec2-key.pem ec2-key.pem ec2-1XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com:~/ec2-key-for.pem user@ec2-1XX-XX-XX-XX.compute.amazonaws.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). lost connection
とりあえずsshのログを見てみようということで、サーバー側にて
% sudo cat /var/log/secure
接続に失敗した該当箇所を見てみると、以下のような記述があった。
sshd[7899]: Invalid user ユーザー名 from IPアドレス port 54937 sshd[7899]: input_userauth_request: invalid user ユーザー名[preauth] sshd[7899]: Connection closed by IPアドレス port 54937 [preauth] sshd[7902]: Invalid user ユーザー名 from IPアドレス port 54946 sshd[7902]: input_userauth_request: invalid user ユーザー名 [preauth] sshd[7902]: Connection closed by IPアドレス port 54946 [preauth]
よく見てみると上記ログのユーザー名のところが、サーバー上のユーザーの名前じゃなくてローカル上のユーザーの名前になっていた。
ということでscpの送信先でサーバー上のユーザーを指定して実行。
% scp -i ec2-key.pem ec2-key.pem ユーザー名@ec2-1XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com:~/ ec2-key.pem 100% 1704 45.6KB/s 00:00
無事ファイルがローカルからサーバーへ送れた。
原因は送信先ユーザーの書き忘れ。 scpでは送信先のユーザー名が省略可能になっていて、ユーザー名を省略した場合はローカルのユーザーを同じユーザー名が使われる。
割と初歩的なミスだと思うが、案外ハマりそうなので忘備録として残しておく。