EC2インスタンス間でSSHパスワードなしでログインする方法

こんにちは!beardです!

今回はAmazonLinuxのインスタンスから別のインスタンスへパスワードなしでSSHでrootでログインする方法を紹介します。

インスタンスが別のインスタンスに対して操作を行うことができます。

考え方としては、以下の図のようにローカルマシンのWindowsからEC2インスタンスへ接続し、さらに別のEC2インスタンスへログインすることになります。この操作は後々紹介するServerspecを使用する上で必要になってきます。

接続イメージ

まずSSHクライアント側のインスタンスでRSA鍵を作成して、出来上がった鍵を表示させます。

コマンドは以下の通りです。

1$ sudo su -2$ ssh-keygen3Generating public/private rsa key pair.4Enter file in which to save the key (/root/.ssh/id_rsa): 5Enter passphrase (empty for no passphrase): 6Enter same passphrase again: 7Your identification has been saved in /root/.ssh/id_rsa.8Your public key has been saved in /root/.ssh/id_rsa.pub.9The key fingerprint is:10(省略)1112$cat /root/.ssh/id_rsa.pub13AAAAB3Nza(以下略)

ここで表示された「id_rsa.pub」のファイルの中身をコピーしてサーバ側のインスタンスに登録します。

サーバ側インスタンスで実行するコマンドは以下の通りです。

内容としては「/root/.ssh/authorizedkeys」の最終行に上で作った「idrsa.pub」の中身を追加します。

その後、「/etc/ssh/sshd_config」を編集し、パスワード無しでrootでのログインを許可します。最後にsshdの設定を読み直します。

1$ sudo su -2$ vim /root/.ssh/authorized_keys34"no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command=""echo 'Please login as the user \""ec2-user\"" rather than the user \""root\"".';echo;sleep 10"" ssh-rsa AAAAB3Nza********************************************************************************************************** / awscli-practice (EC2の場合、インスタンスを起動させたときの鍵が既に登録されている)56AAAAB3Nza(以下略、ここに作成した鍵を追記する)78$ chmod 600 /root/.ssh/authorized_keys9$ vim /etc/ssh/sshd_config10PermitRootLogin forced-commands-only11から以下のように変更12PermitRootLogin without-password1314$ service sshd reload

この後クライアント側のインスタンスから接続できれば成功です。

1$ ssh root@[SSHサーバ側のIPアドレス]

いかがでしたか?

EC2の場合、セキュリティグループの設定でSSHのポート(22番)を許可することを忘れないでください。

次回もお楽しみに!!

この記事を書いた人

aws-recipe-user