2010-12-28

[SSH] 以 key authentication 連 remote host

SSH


平常用 ssh 登入主機時,都是以打密碼的方式進行驗證
還有另一個驗證的方法,就是用 public key 跟 private key 來驗證

ssh-keygen 可以產生的 key 有三種
rsa1, rsa2, dsa
這邊以 rsa2 為例

ssh-keygen

openSSH 本身就有包含 ssh-keygen 這個產生 key 的工具
$ ssh-keygen -t rsa

ssh-keygen 會跑出以下訊息:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nyo/.ssh/id_rsa):
# 設定存放 key 的位置,按 enter 使用預設值
Enter passphrase (empty for no passphrase):
# 輸入 passpharse,想要不打密碼就登入的話,就讓它空白;或是打上 passpharse 之後再交由 ssh-agent 或任何 key 管理系統保管
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
XX:XX:18:XX:19:XX:XX:XX:XX:XX:13:XX:XX:05:XX:XX user@Ubuntu


現在在 ~/.ssh/ 裡我們有一把 public key (id_rsa.pub) 跟一把 private key (id_rsa)
只要把這兩隻 key 保管好,把 public key 放到你要連線的主機就可以了!

把 public key 放到你要連線的主機
$ scp ~/.ssh/id_rsa.pub username@server:~/
連到該主機上,這時你還是只能用打密碼的方式登入
$ ssh username@server
將 public key 加到系統預設放 public key 的地方:authorized_keys
$ cat id_rsa.pub >> ~/.ssh/authorized_keys

設定完成,你再次登入該主機就是以 key authentication
如果你沒打 passphrase 就可以直接登入
有打 passphrase 就打 passphrase

之後如果還要連到其他的主機,只要再將原本的 public key 送到該主機的 authorized_keys 就可以了

SSH 免密碼登入 - JosephJ
ssh keygen 免輸入密碼 - Tsung

沒有留言 :

張貼留言