2015/7/7

讓ssh連線不用手動輸入密碼(自動登入)

最近專案有個應用:在客戶端透過ssh自動連線到伺服器並下達命令,卻遇到了需要手動輸入密碼的問題,發現ssh有提供公私鑰機制可以免除每次登入都需要輸入密碼,設定步驟也很簡單:
  1. 產生金鑰:在客戶端執行
    ssh-keygen -t rsa -b 2048
    
    過程中會出現Enter passphrase提示輸入訊息,直接按Enter跳過即可
  2. 將產生的公鑰內容上傳到伺服器的~/.ssh/authorized_keys檔案
    ssh-copy-id user_id@server_ip
    
只要完成上述兩個步驟就完成了,步驟2的user_id需替換成遠端連線的帳號、server_ip則是遠端連線的ip,底下稍微做一下說明:
  • 步驟1會產生一組本機的公鑰與私鑰,執行完後可以在~/.ssh目錄下看到兩個檔案
    • id_rsa:私鑰,之後連線會使用這私鑰進行演算後傳送到遠端進行驗證
    • id_rsa.pub:公鑰,內容會儲存在遠端的~/.ssh/authorized_keys檔案內,客戶端傳來的驗證資訊會以這資訊進行驗證
  • 步驟2的ssh-copy-id其實是一隻script(/usr/bin/ssh-copy-id),功能就是把id_rsa.pub內容幫忙存到遠端的~/.ssh/authorized_keys檔案內。

1 則留言:

  1. Casino Hotel Near Pittsburgh, PA - MapYRO
    Find Casino 포천 출장안마 Hotel Near Pittsburgh, PA, United States - Find Casino Hotel, 거제 출장샵 Hotels & Gambling in the 용인 출장안마 Rocky Mountains, 경상북도 출장샵 United States, 89449. 충주 출장마사지

    回覆刪除