ssh keygen 免輸入密碼

懶得打密碼, 以 key 做認證登錄.

步驟如下:

  • ssh-keygen -t rsa 或 ssh-keygen -d (dsa) => 產生出 id_rsa, id_rsa.pub
  • scp id_rsa.pub server_hostname:~/.ssh/
  • ssh server_hostname
  • cat .ssh/id_rsa.pub >> .ssh/authorized_keys 即可
  • 這樣子就可以 key 認證登入, 不需輸入密碼.

注意: gen 時會問 Enter passphrase (empty for no passphrase): # 此處直接 enter 跳過,下次才不會詢問password

簡單解說一下:

  • id_rsa: private key
  • id_rsa.pub: public key

將 public key(id_rsa.pub) 拷貝到遠端的電腦後, 加到那 user 的 .ssh/authorized_keys 中.

之後連線時, 就會用本機的 private key(id_rsa) 與遠端電腦的 public key(authorized_keys) 做認證, 確認完成就可以直接登入, 不需輸入帳號密碼, 而且也比較安全.

要關閉使用密碼登入, 只允許使用 Key 來做登入, 可修改此檔案的下述兩個參數: vim /etc/ssh/sshd_config

  • PubkeyAuthentication yes
  • PasswordAuthentication no

將 Key cp 並寫入 authorized_keys 的方式, 有下述幾種簡便的方法:

  1. cat .ssh/id_rsa.pub | ssh hostname 'cat >> .ssh/authorized_keys' # 缺點, 機器沒有 .ssh 目錄會有問題
  2. ssh-copy-id -i .ssh/id_rsa.pub hostname # 推薦
  3. ssh-copy-id -i hostname # 預設會用 .ssh/id_rsa.pub 或現在 ssh-agent 載入的 key

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈ssh keygen 免輸入密碼〉中有 18 則留言

  1. 恩..我好像把方向搞錯了。
    以前都是由client 要求連接SERVER 才會連接。現在換成SERVER 要求Client 來連接他,在雙方連接上以後,client 可以可以自動下指令,有辦法這樣嗎?
    舉個例子,假設我有一台集中控制的固定IP SERVER,我想要把在網際網路上的各個浮動IP的SERVER,用他們自己的SSH SERVER,主動要求中控的SSH Client連接,連接完成後自動下指令。

  2. tightVNC 有server要求client連接的功能。SSH 應該也會有類似的應用才對,這樣也可以解決遠端主機的SSH server在牆裡面的問題

    1. public key scp 過去後,會需要另外 cat 全部放到 authorized_keys 裡面去,id_rsa.pub 就沒有用了,蓋掉沒關係 🙂

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料