環境
- macOS
- EC2
- AMIは、Deep Learning AMI (Ubuntu 16.04) ← ここがミソ
問題
- ローカルのターミナルから、EC2インスタンスにログインする際に、
$: ssh -i keypair_for_xxxx.pem ec2-user@xx.xx.xx.xx
ec2-user@xx.xx.xx.xx: Permission denied (publickey).
とエラーが出てログインできない。
- なお、プライベートキーへの権限やpathなどは問題ない
原因
ユーザー名がec2-user
ではなく、ubuntu
だった。
今まで、Railsで開発したアプリケーションを動かしていたため、AMIとしてAmazon Linux 2 または Amazon Linux AMIを用いてきた。そのユーザー名がec2-user
だったため、デフォルトでユーザー名はec2-user
だと思っていた。
しかし、AMIが異なるとユーザー名が異なることが分かった。
Amazon Linux 2 または Amazon Linux AMI の場合は、ユーザー名は ec2-user です。
CentOS AMI の場合、ユーザー名は centos です。
Debian AMI の場合は、ユーザー名は admin です。
Fedora AMI の場合、ユーザー名は ec2-user または fedora です。
RHEL AMI の場合は、ユーザー名は ec2-user または root のどちらかです。
SUSE AMI の場合は、ユーザー名は ec2-user または root のどちらかです。
Ubuntu AMI の場合は、ユーザー名は ubuntu です。
参考: https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/managing-users.html
解決
以下のようにユーザー名を変えたら接続できた。
$: ssh -i keypair_for_xxxx.pem ubuntu@xx.xx.xx.xx