Linuxのsshコマンドや Tera Term 、PuTTYで sshで接続する場合、パスワード認証よりも安全な公開鍵認証という接続方法があります。
今回、Linuxのsshコマンドでの公開鍵認証での接続方法について説明します。
次回以降では Tera Term 、PuTTYでの接続方法を説明します。
サーバの設定
サーバは Linuxマシンで、sshサーバが動作していることを前提とします。
/etc/ssh/sshd_config の RSAAuthentication , PubkeyAuthentication , AuthorizedKeysFile パラメータが以下のようになっていることを確認して下さい。
なっていない場合は設定後、sshサーバを /etc/init.d/sshd restart で再起動して下さい。
/etc/ssh/sshd_config
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
クライアントがLinuxの場合
公開鍵、秘密鍵をを生成する
クライアント上でRSA形式で公開鍵、秘密鍵を作成します。
ssh-keygen -t rsa -f id_rsa
パスフレーズの設定を求められるので入力します。
何も入力せずに Enter を押すと、パスフレーズは空になります。
入力するパスフレーズは、ここで作成する秘密鍵に設定するためのパスフレーズです。
後ほどクライアントから公開鍵認証で接続する際に、クライアントでこのパスフレーズを入力する必要があります。
ログインに使用するパスワードでは無いことに注意して下さい。
Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again:
これで、id_rsa、id_rsa.pub の2つのファイルが生成されます。
id_rsa は秘密鍵、id_rsa.pubは公開鍵と呼ばれるファイルです。
ここで作成した公開鍵(id_rsa.pub)は、USBメモリや scpコマンド等でサーバ(sshコマンドでの接続先)にコピーして下さい。
公開鍵をサーバに設定する
サーバにログイン後、~/.ssh ディレクトリがあるか確認し、無い場合は作成します。
この時、.ssh ディレクトリの書き込み権限は所有者だけにします。
所有者以外に書き込み権限があると、後ほどクライアントから公開鍵認証で接続した際に、接続が失敗します。
次のコマンドで、.ssh の作成と、ディレクトリの書き込み権限を所有者だけにします。
mkdir ~/.ssh chmod 700 ~/.ssh
クライアントからコピーしてきた公開鍵(id_rsa.pub)を ~/.ssh/ にコピーします。
次にauthorized_keysというファイルに公開鍵を書き込みます。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
もう id_rsa.pub は不要なので削除します。
rm id_rsa.pub
以上でサーバの設定は完了です。
クライアントから sshコマンドで接続する
通常と同様、sshコマンドで接続しますが、この時 -i オプションで秘密鍵(id_rsa)を指定します。
ssh -i id_rsa リモートのユーザ名@サーバ名
パスフレーズの入力を求められた場合は、公開鍵、秘密鍵の生成時に設定したパスフレーズを入力します。
これで公開鍵認証で接続できます。
参考
共通鍵暗号と公開鍵暗号の解説とSSHでの認証手順 – Webサービスの始め方
SSH (1)
SSH公開鍵暗号化方式-サーバ側(接続受け側)の設定 | Tera Term(テラターム)の便利な使い方
コメント