kukai88

垢 - やったことを残す -

ホストベース認証(RSA 公開鍵認証)による ssh 接続

環境


1. 【クライアント側】秘密鍵と公開鍵を作成する

ログインユーザーが「/home/{ユーザー名}」ディレクトリにいることを確認します。

$ pwd


鍵タイプは「RSA素因数分解の困難性を用いた暗号化)」 、鍵長は「2048 ビット」として生成します。

$ ssh-keygen -t rsa -b 2048


/home/{ユーザー名} ディレクトリに「.sshディレクトリが自動的に生成され、その中に下の 2 ファイルが生成されます。


2. 【クライアント側】公開鍵を Ubuntu Server(ssh 接続先)にアップロードする

scp コマンドを用いて「id_rsa.pub(公開鍵)」を Ubuntu Server(ssh 接続先)にアップロードします。

$ scp id_rsa.pub {ユーザー名}@xxx.xxx.xxx.xxx:~/.


3. 【Ubuntu Server 側】アップロードされた id_rsa.pub(公開鍵)を適切な位置に配置する

(※ /home/{ユーザー名}/ に id_rsa.pub(公開鍵)があるはずです。)

/home/{ユーザー名}/.ssh/ となるように「.sshディレクトリを生成して、そのディレクトリ内に「authorized_keys」ファイルを作成します。

$ mkdir .ssh
$ touch .ssh/authorized_keys


次に、authorized_keys ファイルに id_rsa.pub(公開鍵)の内容を書き込みます。

$ cat id_rsa.pub >> .ssh/authorized_keys


4. 【Ubuntu Server 側】Ubuntu Server(ssh 接続先)の ssh 設定ファイルを変更する

ssh 接続の設定ファイルは /etc/ssh/sshd_config であるので、このファイルを変更します。

#PublicAuthentication yes
↓
PublicAuthentication yes   // 公開鍵認証の許可
#AuthorizedKeyFile .ssh/authorized_keys .ssh/authorized_keys2
↓
AuthorizedKeyFile .ssh/authorized_keys .ssh/authorized_keys2   // 公開鍵のパス
#PasswordAuthentication yes
↓
PasswordAuthentication no // パスワード認証を拒否


変更が完了したら、sshd を再起動して変更を反映します。

$ systemctl restart ssh


5. 【クライアント側】Ubuntu Server に ssh 接続をしてみる

クライアント側に保存している id_rsa秘密鍵)を -i で指定して ssh 接続します。

$ ssh -i .ssh/id_rsa {ユーザー名}@xxx.xxx.xxx.xxx


また、パスワード認証でログインできないことを確認しておきます。

$ ssh {ユーザー名}@xxx.xxx.xxx.xxx


これで、id_rsa秘密鍵)を保持しているクライアントのみしか ssh 接続できなくなりました。