このような場合、あらかじめサーバ間で鍵を交換しておくことで、鍵による認証によってパスワード入力無しにsshを行えるようになります。
概念的には、サーバAが公開鍵、秘密鍵のペアを作成しサーバBに公開鍵を渡しておくことで、サーバB側でのsshのログイン認証をその鍵で行う、というものです。サーバAからサーバBに渡すと、サーバBへのログイン時のパスワード認証が省略されます。その逆を行うことで、サーバA、サーバB相互にパスワード認証せずにsshログインが可能になるというものです。
実際のコマンドで紹介します。
■サーバAで公開鍵・秘密鍵のペアを作成してサーバBに送る
$ su - hogeまずsshでログインしたいユーザになっておきます。(ここではhoge)
$ ssh-keygen -t rsa
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hoge/.ssh/id_rsa):で鍵を作成します。"-t"オプションは鍵の種類を指定します。"rsa"の他には"dsa","ecdsa"等あるようです。ファイル名の指定は無しでもいいです。しなければ/home/hoge/.ssh/id_rsaが鍵ファイルとして生成されます。
Enter passphrase (empty for no passphrase): Enter same passphrase again:上記のようにパスフレーズというのを聞かれますが、何も入れずそのままEnterでOKです。入れてしまうと後々ログインの度にパスフレーズが聞かれます。
$ ls /home/hoge/.ssh/ id_rsa id_rsa.pub鍵ができました。 pubがついているほうが公開鍵です。中身を見てみましょう。
$ cat ./id_rsa.pub sh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDnU8j4jni2h/YxCloVDnxv447qr01PI8+ThDCT79edjOxHWAn8ai7mYdckkJiE2aIPPTqZbTEz09++J7druRw5ksUlmadtIoy9gx/XsyulqeNASv7sPG66bN3Zwf3GvlUzCn+3CbECMu24W9im4gtY1hq8R+L0iWvZRFKVpKUIPDNpzryJJwA+n3el+UUqcjWVZuTN5Z7M8dMdwDg/TshuQFwgG0yO8fJonc/y+dJR6rH05tCUL1cIHM8HFEfQHmSuewUpDMilNeZ3+KaALJPosBfZQ1/g71fb4fnIVfDyxz6MG2FKJOsoWFFatCdhMreo3lmetg4E4MJK5IlAOBLn hoge@hostA
こんな感じ。この鍵情報をサーバBにわたします。
$ scp ./id_rsa.pub hoge@hostB:/home/hoge/
$ scp ./id_rsa.pub hoge@hostB:/home/hoge/
テキストなので、コピーして貼り付けでもよいですが、ここではscpで送りました。以上でサーバA側での作業は完了です。
■サーバB側での設定
サーバB側では、
・sshサーバの設定変更
・サーバAで生成した鍵を登録
をおこないます。
まずはsshサーバ設定の変更を行っていきます。
■サーバB側での設定
サーバB側では、
・sshサーバの設定変更
・サーバAで生成した鍵を登録
をおこないます。
まずはsshサーバ設定の変更を行っていきます。
$ vi /etc/ssh/sshd_config
でsshサーバの設定ファイルに対して、下記3行をコメントアウトからはずして有効化します。
======================================= ~ RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ~ =======================================
RSAAuthentication
→RSAによる認証を許可するかどうかを設定する
PukeyAutentication
→公開鍵による認証を受け付けるかどうかを設定する
AuthorizedKeysFile
→公開鍵情報を持つファイルを指定します。上記設定の場合はこの"authorized_keys"というファイルに、実際の公開鍵を追記します。
$ service sshd restart
でsshdを再起動します。これで設定が反映されます。
次は、公開鍵の登録です。
公開鍵は、上記"AuthorizedKeyFiles"で鍵情報のファイルを指定しているので、
$ ls /home/hoge/ id_rsa.pub
で公開鍵が送られてきていることを確認し、
$ cat /home/hoge/id_rsa.pub >> /home/hoge/.ssh/authorized_keys
でキーファイルにサーバAの公開鍵を追記します。
以上でサーバB側の設定も完了です。
サーバAからサーバBにhogeユーザでsshログインがパスワード無しでできるはずです。
逆もやりたい場合は、上記手順を逆に読み替えて設定を入れればOKです。
0 件のコメント:
コメントを投稿