頻繁に接続しに行くサーバで毎回パスワード打つのは面倒くさいので鍵交換することでパス無しでSSH接続を可能にします。
自分の端末をAサーバ、接続したいサーバをBサーバとします。
Aサーバ上で公開鍵を作成
1 2 3 4 |
cd ホームディレクトリに移動 mkdir .ssh ディレクトリを作成します。 cd .ssh/ 移動します ssh-keygen このコマンドで公開鍵を作成します。 |
いろいろと聞かれますが何も気にせずにエンターで問題なしです。
すると、
- id_rsa (秘密鍵)
- id_rsa.pub (公開鍵)
というファイルが出来上がります。
pubがついてるほうが公開鍵になりますので今回はこいつを使います。
※pub はpublicという意味だと思うのでそれを知ってるだけでだいぶ覚えやすいですね。
ファイルができあがったら、
1 |
cat id_rsa.pub |
で中身を出力してまるっとコピーです。
とりあえずここまででAサーバ上での作業は終わりです。
Bサーバ上にAサーバで作った公開鍵を配置
Bサーバにログインしますがこの時SSHで接続したいユーザになることを忘れてないでください。
1 |
ssh root@接続先サーバIP |
というコマンドで接続しに行くならrootでBサーバではrootでログインしてくださいって話です。
今回はrootで接続するのを想定して話を進めます。
1 2 3 |
cd ホームディレクトリに移動 mkdir .ssh ディレクトリを作成します。 cd .ssh/ 移動します |
ここまではAサーバでやったことと一緒。
この後、
1 |
vi authorized_keys |
を打ってさっきコピーした公開鍵をそのまま貼り付けです。
貼り付けたら、
:wq
で保存して終了です。
以上で鍵交換が完了したことになります。
「え?マジで?こんな簡単なん?」
って感じですが意外と簡単なんです。
SSH接続確認
Aサーバ上で、
1 |
ssh root@接続先サーバIP |
を打ってみましょう。見事ノンパスでログインできれば成功です。
何かしらの再起動とかは不要です。
※初回の接続だと接続先情報がknown_hostsに書かれてなくて何か聞かれるかもですがyesと一回打てば以降は何も聞かれないはずです。
補足
オプション
http://euske.github.io/openssh-jman/ssh-keygen.html
こちらに詳しく書かれてます。暗号化方式とかファイル名とかももちろん指定できますので必要に応じてどうぞ。
ちなみに
Aサーバで作った.sshディレクトリをCサーバにそのまま持っていくことでCサーバからBサーバにノンパスで行くことも可能です。
要は作った鍵と配置した鍵が一致していればどこにでも行けるのです。現実世界で考えると当然っちゃ当然ですね。鍵が合えば開けられるので。
今日の一言
こういうのはだいたいすぐ忘れちゃう。