配置ssh無密碼訪問:
比如,A是server,B是client,現在B希望通過ssh無密碼訪問A,那么就需要把B的公匙放到A的authorized_keys文件中。
1。首先需要A支持這種訪問模式:
配置A的/etc/ssh/sshd_config,將這兩項設置如下:
RSAAuthentication yes
PubkeyAuthentication yes
2。B生產id_rsa.pub,并將這個文件中的內容最終用“>>”添加到A的authorized_keys文件末尾。
3。在B上,ssh A的ip/A的hostname就可以實現無密碼登陸A了
但是這么做是有前提的,很多人都忽略了這個前提,導致費了很多周折都沒有成功,就像我似的,我就費了很多時間才找到問題所在。
因為A或B機器里都有很多個賬戶,在B上鍵入ssh命令后,我們并沒有制定連接到A上的那個帳戶,那么這里面默認的潛規則是什么呢?就是你在B上ssh時,當前使用的那個帳戶(假如名字是haha)就會作為你期待連接到A上的帳戶,我們可以顯示的通過ssh -l haha [hostname]或者ssh haha@[hostname]這種方式來連接到A上的haha帳戶,如果用隱士規則的話,那么系統就是依據你在B上當前使用的帳戶來作為A上被連接的帳戶。
因此,要實現無密碼訪問的前提就是:A和B上有同樣的帳戶名稱,完全一致,包括大小寫。(我就很郁悶,因為我在windows下用cygwin和一個linux機器連接,windows下的帳戶第一個字母大寫了,而linux的帳戶的第一個字母是小寫的,導致我費了很長時間都沒有發現問題癥結所在)。其實,這也就是為什么在配置hadoop分布式計算時,必須要求的每個機器上都必須有一個完全一樣的用戶名。
既然說到了后面的這些注意事項,那么也要提醒大家,在上面給出的三個步驟中的第2步,必須是在等同的帳戶下得到的id_rsa.pub文件,否則還是不行。