最近、Linuxでスクリプトとかつくってて
せっかくなので後々参考になりそうなものを備忘録として残しておきます。
SSHでパスワードなしでログインする方法のノンパス設定。
クライアントホスト:system01
サーバホスト :system02
ユーザー :jagaimo
1.クライアント側で公開鍵と秘密鍵の生成を行う。
[jagaimo@system01 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/jagaimo/.ssh/id_rsa): ⇒そのままエンター Enter passphrase (empty for no passphrase): ⇒そのままエンター Enter same passphrase again: ⇒そのままエンター Your identification has been saved in /home/jagaimo/.ssh/id_rsa. Your public key has been saved in /home/jagaimo/.ssh/id_rsa.pub. The key fingerprint is:
上記のメッセージが出力されて終了
id_rsa.pubが公開鍵で、id_rsaが秘密鍵
2.[.ssh]ディレクトリと[authorized_keys]ファイルの作成
※すでにあればやらなくてよし。
公開鍵暗号方式で認証したいユーザーでログインして作成する。
[jagaimo@system01 ~]$ ssh system02 jagaimo@system02's password: [jagaimo@system02 ~]$ [jagaimo@system02 ~]$ [jagaimo@system02 ~]$ mkdir .ssh [jagaimo@system02 ~]$ chmod 700 .ssh [jagaimo@system02 ~]$ touch .ssh/authorized_keys [jagaimo@system02 ~]$ chmod 600 .ssh/authorized_keys [jagaimo@system02 ~]$ exit
3.サーバー側でクライアントの公開鍵を追記
公開鍵一度クライアント側にもどって公開鍵をサーバへ転送して
.ssh/authorized_keysに追記する。
[jagaimo@system01 ~]$ scp -p .ssh/id_rsa.pub system02:/home/jagaimo/.ssh/. [jagaimo@system01 ~]$ ssh system02 jagaimo@system02's password: [jagaimo@system02 ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys [jagaimo@system02 ~]$ rm -rf .ssh/id_rsa.pub [jagaimo@system02 ~]$ exit logout
これでsystem01からsystem02へはノンパスでアクセス可能です。
と、ずっと上記のやり方でやっていたんだけど、
簡単な方法を教えてもらいました。
ssh-copy-idコマンドを使用したやり方。
2まで完了してれば下記設定で、
サーバ側へログイン、公開鍵追記、公開鍵削除の作業がなくせます。
[jagaimo@system01 ~]$ ssh-copy-id -i .ssh/id_rsa.pub system02 15 jagaimo@system02's password: Now try logging into the machine, with "ssh 'system02'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [jagaimo@system01 ~]$
これで終了。
あんまり大したことないかもしれないけど、
サーバーを大量に設定する場合はこのやり方が断然楽になりますね。
いやーいい仕事した。
以上