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