酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

MacからAWS EC2のAmazon LinuxにSSHで接続する

AWS EC2(Amazon Linux AMI)で新しいインスタンスを作成するとec2-userというユーザーが作成されます。Amazon Linuxの場合にはデフォルトでec2-userですが、それ以外のAMIの場合には異なることがあるようなので別途確認してみてください。

MacからSSH接続する

EC2インスタンスを初めて作成した時に秘密キーが生成されます。または新しく生成しなおした時に秘密キーが作成されます。

ここでは秘密キーファイル(.pem)は"/Users/ch3cooh/ec2.pem"に格納されているものとします。

パーミッションを変更しておきます。理由は後述します。

$ chmod 400 /Users/ch3cooh/ec2.pem

SSH接続する

sshコマンドでEC2のインスタンスに接続します。ユーザー@ホストの形で指定します。

$ ssh -i /Users/ch3cooh/ec2.pem ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com

Last login: Wed Mar  2 09:45:23 2016 from ***.ne.jp

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/
[ec2-user@ip-xxx-xx-xx-xxx ~]$ 

接続できました。ホストはAWSのマネージコンソールから確認することができます。

パラメータを省略してSSH接続する

毎回鍵のパスと長いホスト名を指定するのは少し大変です。

~/.ssh/configに鍵のパスやユーザー名を指定してしまいます。

Host ec2user
  HostName ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
  User ec2-user
  Port 22
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile "/Users/ch3cooh/ec2.pem"
  IdentitiesOnly yes
  LogLevel FATAL

接続します。

ssh ec2user

で接続できるようになりました。

トラブルシューティング

秘密キー鍵の指定はまちがっていないのにSSH接続できない

以下のような「変なエラー」が表示された場合は、秘密キーファイルのパーミッションが間違っています。

Warning: Permanently added 'ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com,xx.xx.xxx.xxx' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/Users/ch3cooh/ec2.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/ch3cooh/ec2.pem": bad permissions
Permission denied (publickey).

警告メッセージに書いている通りパーミッションを変更します。

$ chmod 400 /Users/ch3cooh/ec2.pem