【AWS】EC2からEC2へパスワード入力なしでSSHする

スポンサーリンク

SSH接続するプログラムを作成する場合にパスワード入力が求められてしまって、処理が止まることがあります。

その場合の対処方法として、SSHの認証方法を鍵認証にする方法がありますので、ご紹介します。

yasu
yasu

パスワード認証する記事も書いていますので、よければご参考ください。

【AWS】EC2からEC2へSSH接続してみる

 

鍵認証のながれ

そこまで難しくはないのですが、認証の流れを知っておくと今後役立つと思います。

  1. 接続元でキーペアを作成する
  2. 接続元で作成した公開鍵を接続先に配置する
  3. 接続先のSSH設定を変更する。

この3つの流れになります。重要なのは接続元でキーを作成し、接続先で設定することです。

 

キーペアを作成する(接続元作業)

rootユーザーまたはsudoが使えるユーザーで接続元へログインします。

以下コマンドでキーペアを作成します。

ssh-keygen -t rsa

パスワードの入力が聞かれると思いますが、何も入力しないでエンターを押して作成してください。

作成時にパスワードを入力してしまうと、鍵認証時に鍵を復号するためのパスワードを聞かれてしまいます。

今回の目的はパスワードを聞かれずにSSH接続することなので、パスワードは入力しません。

作成が完了すると、「/home/ユーザー/.ssh」に「id_rsa」(秘密鍵)「id_rsa.pub」(公開鍵)が作成されますので、確認してください。

設定ファイルの確認

/etc/ssh/ssh_configに秘密鍵が指定されていることを確認しましょう。

# IdentityFile ~/.ssh/id_rsa

 

公開鍵を配置する(接続先作業)

ユーザーで設定するため、「id_rsa.pub」(公開鍵)の設置先は「/home/接続するユーザー/.ssh」になります。

配置方法はいろいろありますが、接続先から接続元へのSCPは以下を参考ください。

scp ユーザー名@IPまたはホスト名:公開鍵のパス /home/接続するユーザー/.ssh

 

公開鍵を追記する(接続先作業)

以下のコマンドでid_rsa.pubの内容をauthorized_keysに追記できます。

cat id_rsa.pub >> authorized_keys

ちなみに、公開鍵の名前は設定ファイルで指定しますので、必ずauthorized_keysにする必要はありません。

しかし、名前を変えると、ローカルからec2-userでSSH接続する場合に接続できなくなる可能性があります。

yasu
yasu

僕は接続できなくなり、インスタンスを再作成しましたw

設定ファイルを変更する(接続先作業)

viエディタなどで、「/etc/ssh/sshd_config」を編集します。

 

AuthorizedKeysFileで公開鍵名を指定します。

(公開鍵名を変更した場合は、authorized_keysの部分を公開鍵名にしてください)

AuthorizedKeysFile .ssh/authorized_keys

 

PasswordAuthenticationでパスワード認証を無効にします。

PasswordAuthentication no

 

設定が完了したら、再起動します。

sudo service sshd restart

 

以上で設定は完了です。

接続元から接続先サーバーへsshしてみましょう。

エラーがでたら

いざSSHしてみるとPermission deniedのエラーになることがありあます。

その場合は以下を確認してみてください。

  • ホームディレクトリの権限(接続元・接続先)
  • .sshディレクトリのの権限(接続元・接続先)
  • 秘密鍵(この記事ではid_rsa)の権限(接続元)
  • /etc/ssh/ssh_configに秘密鍵が指定されているか(接続元)
  •  .ssh/authorized_keysの権限(接続先)

「chmod 権限レベル ファイル名またはディレクトリ名」で権限を変更できます。用途に合った権限にしてください。

タイトルとURLをコピーしました