多用戶密鑰
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