天天看點

來吧~不要互相傷害,ssh之間要互相信任

兩台伺服器之間scp也好,pssh也好,每一次互相傳輸檔案或者遠距離控制都要輸入對方賬号對應的密碼,這是一個很麻煩很讨厭的事兒。這麼麻煩又讨厭的事兒應該怎麼避免呢?這就是ssh的信任登陸。

假設A與B是兩台伺服器,其中A是server,B是client。A是發起ssh請求的一方,B是接收ssh請求的一方。

在A機器上,# ssh-keygen -t dsa,這一步是生成一個ssh的共/私密匙對。回車之後,會出現如下的資訊:

Generating public/private dsa key pair.

Enter file in which to save the key (/root/.ssh/id_dsa): 這一步,是選擇儲存密匙的目錄,直接回車就行

Enter passphrase (empty for no passphrase): 這一步是詢問這個信任關系是否需要密碼,如果是過的硬的關系,自然不需要密碼的,是以繼續回車

Enter same passphrase again:對上一步進行确認,三聯回車,然後就是這樣,不但生成了“key指紋”還生成了一個圖案。

<a href="http://s5.51cto.com/wyfs02/M02/7F/01/wKioL1cPsteBsBB-AABIkcjMw6Q331.png" target="_blank"></a>

然後來到/root/.ssh裡,就會發現多了兩個檔案:id_dsa 和 id_dsa.pub,其中id_dsa.pub是需要給B伺服器的。這樣一個鑰匙一式兩份,A一份B一份,兩個是一對是以就這樣建立了信任關系。

在B伺服器輸入 #scp A的ip位址:/root/.ssh/id_dsa.pub /root/.ssh,這樣就把A伺服器的id_dsa.pub檔案拽到自己的/root/.ssh檔案夾裡,然後#mv id_dsa.pub authorized_keys ,如果改名叫authorized_keys2 的話,就是通過SSH2的方式連接配接。

現在A與B之間就建立了ssh信任關系,注意!目前這個信任關系是單向的,即A找B的root使用者(檔案在/root檔案下)要檔案,是不需要B的 root使用者密碼,如果B反過來找A要檔案的話,還是要A的密碼的。

改完之後,别忘了确認authorized_keys 的chmod 是644。

要是對方機器把authorized_keys删除掉,那麼scp或者pssh的話就恢複要密碼的環節了。linux曆史連接配接資訊在/var/log/secure中。

ssh采用公鑰要比使用密碼登入安全許多倍!!!是以這種方法要大力推廣!!!

無法建立信任關系時排錯步驟

1.AB主機名是預設的Localhost,如果AB之間的主機名相同,可能會導緻無法成功。要修改主機名用hostname 指令,修改/etc/sysconfig/network,then restart your server.

2.檢視SSH配置檔案/etc/ssh/ssh_config,找到IdentityFile所指定的檔案是什麼,有的不是預設的id_rsa,這裡指定的檔案要和第一部分生成的檔案名要相同,這裡是id_rsa.

請檢查/etc/ssh/sshd_config 裡面是否設定Allowusers了。

3.檢視B機authorized-keys的檔案權限是否為600或者644 (linux檔案權限詳解),如直接在server機器上vi或touch建立檔案authorized_keys,可能會導緻信任關系無法建立。

(實踐證明:如果是root之間建信任,直接644就ok,如果是非root使用者,644權限是不行的。必須要改成700,600好像也行)

4.檢視/var/log/secure日志,裡面應該有一些蛛絲馬迹可以供你參考

ssh-copy-id 的缺憾

ssh-copy-id有一個很要命的問題,那就是預設它僅僅支援SSH運作在22端口的情況,不過實際上出于安全的需要,我們往往都會更改伺服器的SSH端口,比如說改成10022端口,這時候你運作ssh-copy-id就會報錯了,直接修改ssh-copy-id腳本當然可以修正這個問題,但是那樣顯得太生硬了,實際上還有更好的辦法:

[注: ssh-copy-id 把密鑰追加到遠端主機的 .ssh/authorized_key 上.]

# vi ~/.ssh/config 加上内容: Host server Hostname ip Port 10022 你也可以單獨隻加入Port一行配置,那樣就是一個全局配置,儲存後再運作ssh-copy-id指令就不會報錯了。 

補充:經網友提示,如果端口不是22,不修改config檔案,按如下方式也可以: ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"

附:

# ssh-keygen

# cat ~/.ssh/id_rsa.pub | ssh user@server "cat - &gt;&gt; ~/.ssh/authorized_keys"

參考資料:http://www.dongwm.com/archives/%E5%85%B3%E4%BA%8Essh%E5%91%BD%E4%BB%A4%E7%A0%94%E7%A9%B6%E4%BB%A5%E5%8F%8Assh%E4%BF%A1%E4%BB%BB%E8%AF%A6%E8%A7%A3/

 本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/1763978

繼續閱讀