公開鍵を登録して、SSHにパスワードレスでログインする方法を書いていく。ついでに、
その際に使う.ssh/authorized_key
ファイルのオプションについても簡単にまとめておく。
┌─────────────┐ ┌─────────────┐
│ 192.168.1.1 │ │ 192.168.1.2 │
│ │ ssh │ │
│ host_A ├──────────►│ host_B │
│ (client) │ w/o passwd│ (server) │
└─────────────┘ └─────────────┘
ssh_id ssh_id.pub
[private key] [public key]
クライアントホスト上で鍵を生成する
秘密鍵と公開鍵のペアを生成する
### host_A上
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
デフォルトでは.ssh/
配下に秘密鍵(id_rsa
)と公開鍵(id_rsa.pub
)が生成される。
### host_A上
$ ls -l .ssh/
total 20
-rw------- 1 ubuntu ubuntu 2602 Dec 31 12:39 id_rsa
-rw-r--r-- 1 ubuntu ubuntu 571 Dec 31 12:39 id_rsa.pub
$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+apmAHWgN7kzUeR14NidyTY+cdrnvfzciUam9vKZxRI9f1FzF6AGKTQ+6Ol7EM2v+V9DC1/BtdgjjnM91nfSz7mD0cKpnyfXHEWMGRwcQPGWmbKh90XyhjHnFqdI4rRBvj+rL+JiLbvda53gtdkmRgCs5bDXUU/QefNA/kQkc2UGBwaABkmymq6XGBN/Y5SAo6Hjc5twIYTCE++v3HAlNgclGmdOubKJpdMDc+pOxKwcsXSmwb1V+MW3qPecusZ0NNWF+1esfmFd1UDBwkkWs6seCeg5WrbzpKbX3Uz043l1285goAAUsvPt36eu0Dj6WIz/gjGyww/C7PBpkK3L9LzaZVUhceC4fy8VeCDToRxs5FpXY5CROlUNIDM1Kvwy+bSLtdCwId/Y7RVqfMWcwO7yutL1wtiM+/uy5WYkG56Z3HQrKTJR4jzeqh+dC5vDw/RUxFAe22Cp/j2WIuUj1BosxmfGjhRNqnnU6QK3/vrZ6puEz2bQSQMbE9z2LATk= ubuntu@admin-test
秘密鍵は、permissionが400(オーナーだけがRead only)
でないとエラーになる。
公開鍵をリモートホスト上に登録する
続いて、上記で発行した公開鍵をリモートホスト上の.ssh/authorized_keys
に追記する。
### host_B上
$ vim .ssh/authorized_key
(最後尾に上記の公開鍵のテキストをコピーする)
authorized_keys
ファイルには以下のフォーマットになっている。
(スペース区切り)
options keytype base64-encoded-key comment
options
はその名の通り、オプションなので省略可能である。たいていの場合はオプションなしでauthorized_keys
に書き込まれていることが多いが、IPアクセス制限などを書くこともできる。詳細は、ドキュメント(man5 authorized_keys)を参照。
アクセスの確認
### host_A上からログインを確認
$ ssh [email protected]
設定が問題なければ、秘密鍵(.ssh/id_rsa
)を使って(パスワードなしで)ログインできる。