天天看點

實作無密碼SSH登入

為了更好了解,使用Hadoop,首先需要學會配置ssh,看了幾篇牛人的教程,學舌将就下來了,但還是感覺有些地方要總結一下,還是值得寫點東西的。首先總結一下ubuntu linux上的配置,然後是windows cygwin 上的。

Ubuntu Linux

在ubuntu 上安裝 ssh隻要輸入 apt-cache search ssh,然後找到需要安裝的包,或者直接輸入 apt-get install ssh。

下面需要用 ssh 包含的工具 ssh-keygen 生成一個公私鑰對: ssh-keygen –t dsa 或者 ssh-keygen –t rsa ,前者生成的是RSA公私鑰,後者是DSA公私鑰。如果不指定生成位置,那麼預設安裝的位置是目前使用者根目錄下的 .ssh 目錄前面,同時可以指定查詢私鑰的密碼,也就是 passphrase,這裡為了實作無密碼無輸入登入顯然把passphrase置空也就是直接回車就可以了。

這裡看看 .ssh目錄,這裡有兩個檔案比較關鍵,一個是 authorized_keys ,這裡是ssh伺服器接受登入時預設使用的公鑰集合,也就是登入該伺服器的用戶端提供的私鑰必須和這個公鑰集合的某個公鑰比對。是以如果你想讓某個客戶登入,那麼就把它的公鑰添加到這個檔案的末尾,那麼那個用戶端就可以用對應的私鑰通路這個伺服器了。另一個關鍵的檔案是 known_hosts,這似乎是一個曆史記錄,他會把通路者的一些資訊記錄下來,如果有些奇怪的問題出現可以嘗試删除這個檔案,重新登入。

最後要實作無密碼登入的一個步驟是要對該ssh伺服器的配置修改一下,也就是 /etc/ssh 目錄下的 sshd_config 檔案下的 PasswordAuthentication 設定 為 no, 預設情況下是注釋掉這個選項,使用時預設為 yes

好了,伺服器端的配置就完成了,如果下面你輸入  ssh localhost,可以實作無密碼登入的話,那麼就達到目的了

對于用戶端來說,還要進行一下配置,如果是從另外一台 ubuntu linux 上登入,還需要注意以下幾點:

1. ssh 登入時,如果你的指令是 ssh 遠端節點hostname或者遠端節點IP位址,那麼你試圖登入所使用的私鑰就是目前使用者目錄下的 id_dsa,或 id_rsa,如果出現問題,可以參考一下 ssh-agent的用法,http://tech.ddvip.com/2009-01/1232300204106230.html

2. 一定要把你所使用的上述私鑰對應的公鑰追加到你要登入的主機帳戶主目錄下 .ssh 目錄的 authorized_key檔案裡,否則會認證失敗

一般都是用指令  cat key_pub >> authorized_keys ,key_pub 就是你的公鑰

當然也可以在windows下使用用戶端登入,我推薦 putty ,支援中文顯示的,無須安裝,界面簡潔,挺好用的。這裡要注意以下幾點,首先putty登入時使用的私鑰的格式與 linux系統下生成的私鑰的格式不相容,需要轉換一下,不需要下載下傳工具,putty包裡就帶了一個轉換工具。轉換的時候首先要把約定的私鑰格式先指定一下,否則就會提示輸入passphrase,這樣你原來如果沒有指定passphrase就沒法轉換了,都是小細節,多嘗試幾次就可以了。

Windows

在windows主要是安裝 cygwin 版本的 ssh 服務,看得教程裡說需要額外的 sed,svn程式,其實還缺少很多包,我第一次安裝是奉行最小安裝,結果很多ssh依賴的包沒有裝好,導緻sshd服務啟動總是失敗,後來直接輸入 /usr/sbin/sshd ,執行後看到錯誤提示,原來缺少很多包,于是一個一個添上,記得把cygwin 裡負責安裝,啟動 windows本地服務的安裝好,還有幾個庫,tcpwrapper,等,按照錯誤提示一個一個添上,然後啟動服務就可以了。這樣其他的操作就和 linux 下面差不多了。

我這裡講的比較粗,一是很多細節記不住,也沒有必要贅述,還有就是手懶,不想寫太細了。權作為以後遇到問題時以供檢索吧。

繼續閱讀