公開鍵認証による接続方法(sshコマンドの場合)

スポンサーリンク

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 >> authorized_keys
chmod 600 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(テラターム)の便利な使い方

コメント

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