Linux同士でSSH鍵交換


SSH経由でリモートサーバのコマンドを実行する場合など、SSH鍵やパスフレーズをプログタム内に記述して実装する事になります。
その際の鍵交換の方法を紹介するサイトで、わかりやすく整理されている情報が無かったので、改めてご紹介します。

SSHの接続元(クライアント)で鍵を作成

まずはSSHの接続元であるクライアントで以下を実行して、公開鍵と秘密鍵を作成します。

ssh-keygen -t rsa

秘密鍵と公開鍵の保存先+ファイル名を聞いて来ますので、以下の様に保存します。
(作成した鍵ファイルは、プログラムから指定する事になります。)

Enter file in which to save the key (/root/.ssh/id_rsa): 保存先

次にパスフレーズを入力します。
これも、プログラムから指定するパスフレーズになります。

Enter passphrase (empty for no passphrase): 任意のパスフレーズを入力
Enter same passphrase again: もう1回入力

作成した公開鍵を、scpで接続先サーバの接続先ユーザのホームディレクトリの.sshディレクトリ内にコピーします。または、作成した公開鍵をcatなどで開き中身をコピーして、接続先サーバに保存してもOKです。

例1) 192.168.0.1のホストにrootでSSH接続したい場合

scp 作成した公開鍵 root@192.168.0.1:/root/.ssh/

例2) 中身をコピーする場合(例ではrootに接続)
接続元サーバで、

cat 作成した公開鍵

の中身のテキストをコピーして、
接続先サーバで、

vi /root/.ssh/id_rsa.pub
コピーしたテキストを貼付け

SSH接続元で必要な作業は以上の通りです。

SSH接続先(SSHサーバ)の設定

コピーしたファイルの中身を、接続先のユーザの、.ssh/authorized_keysファイルに記述します。

cd 接続先ユーザのホームディレクトリ/.ssh/
cat id_rsa.pub >> authorized_keys 

次にsshの設定を変更します。

vi /etc/ssh/sshd_config
----これらがコメントアウトされていた場合、コメントアウトを解除----
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
--------------------------------------------------------
service sshd restart

以上で設定完了です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です