こんにちは!beardです!
今回はAmazonLinuxのインスタンスから別のインスタンスへパスワードなしでSSHでrootでログインする方法を紹介します。
インスタンスが別のインスタンスに対して操作を行うことができます。
考え方としては、以下の図のようにローカルマシンのWindowsからEC2インスタンスへ接続し、さらに別のEC2インスタンスへログインすることになります。この操作は後々紹介するServerspecを使用する上で必要になってきます。
まずSSHクライアント側のインスタンスでRSA鍵を作成して、出来上がった鍵を表示させます。
コマンドは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ sudo su - $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: (省略) $cat /root/.ssh/id_rsa.pub AAAAB3Nza(以下略) |
ここで表示された「id_rsa.pub」のファイルの中身をコピーしてサーバ側のインスタンスに登録します。
サーバ側インスタンスで実行するコマンドは以下の通りです。
内容としては「/root/.ssh/authorized_keys」の最終行に上で作った「id_rsa.pub」の中身を追加します。
その後、「/etc/ssh/sshd_config」を編集し、パスワード無しでrootでのログインを許可します。最後にsshdの設定を読み直します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ sudo su - $ vim /root/.ssh/authorized_keys "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の場合、インスタンスを起動させたときの鍵が既に登録されている) AAAAB3Nza(以下略、ここに作成した鍵を追記する) $ chmod 600 /root/.ssh/authorized_keys $ vim /etc/ssh/sshd_config PermitRootLogin forced-commands-only から以下のように変更 PermitRootLogin without-password $ service sshd reload |
この後クライアント側のインスタンスから接続できれば成功です。
1 |
$ ssh root@[SSHサーバ側のIPアドレス] |
いかがでしたか?
EC2の場合、セキュリティグループの設定でSSHのポート(22番)を許可することを忘れないでください。
次回もお楽しみに!!