ssh 多用戶免密碼登錄

多用戶密鑰

SSH 密鑰 認證配置 挺簡單的,就是ssh-keygen生成密鑰公鑰對。然後讓服務器端放好公鑰,本地有密鑰就能實現認證。同時這對密鑰在兼容ssh協議下都能用的。

LocalHost:L  
ServerHost:S

ssh-keygen可以在L或S上運行,不過最終是讓S上有公鑰,L上有密鑰。

推薦在L上運行ssh-keygen,然後用ssh-copy-id把公鑰傳到S上,這樣有幾個好處:
   1. 公鑰在網絡上傳輸相對安全。
   2. 使用ssh-copy-id會自動把公鑰放到S上的$HOME/.ssh/authorized_keys 並且保證權限OK。

這裏有個問題:
如果有兩臺S,這樣本地就會有兩份密鑰,這樣如何存放呢?
開始想到的方法:使用一套公鑰密鑰。使用ssh-copy-id到不同的server,同時維護config方便登錄。 (相對不太安全,下面是我剛瞭解到的)
{還想到個方法是兩臺機器使用不同類型的密鑰,rsa和dsa,這樣就用兩個密鑰文件了,但是如果和很多臺機器想不同密鑰呢?密鑰不像公鑰那樣放在同一個文件裏的吧?
[Ref ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2 from man ssh]}

怎麼在登錄不同服務器使用不同的密鑰呢?man ssh就看到有個 -i 參數可以指定不同的密鑰。我習慣.ssh/config裏放服務器信息,那對應的密鑰信息怎麼寫呢 man ssh_config發現有個IdentityFile配置項。

現在要設置HostA和HostB的認證



ssh-keygen //設置密鑰名 id_rsa.HostA 自動生成id_rsa.HostA .pub的公鑰   
ssh-keygen //設置密鑰名 id_rsa.HostB 自動生成id_rsa.HostB .pub的公鑰   
  
ssh-copy-id -i id_rsa.HostA.pub [email protected]   
ssh-copy-id -i id_rsa.HostB.pub [email protected]


5.本地.ssh/config文件

Host HostA  
    HostName HostA.domain.net  
    User useratA  
    IdentityFile  ~/.ssh/id_rsa.HostA  
  
Host HostB  
    HostName HostB.domain.net  
    User useratB  
    IdentityFile  ~/.ssh/id_rsa.HostB

然後就可以直接ssh HostA 或者HostB使用不同密鑰對登錄了。

********************************************************************************************************************


多用戶公鑰

如果服務器的目錄中沒有authorized_keys 文件,只需要將id_rsa.pub公鑰文件的名稱更改爲authorized_keys,如果已經有了authorized_keys文件,使用 “>>”重定向符將用戶公鑰追加到authorized_keys文件中

cat id_rsa.pub >> ~/.ssh/authorized_keys

或者

ssh-copy-id [-i [identity_file]] [user@]machine


原文:http://blog.csdn.net/sdq4700/article/details/7231168

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章