天天看點

兩個openssh間免密碼登入

兩個openssh間免密碼登入

以下針對的是openssh,而不是ssh,也不是ssh2。配置分兩部分:一是對登入機的配置,二是對被登入機的配置,其中登入機為用戶端,被登入機為服務端,也就是解決用戶端到服務端的無密碼登入問題。下述涉及到的指令,可以直接拷貝到Linux終端上執行,已全部驗證通過,操作環境為CentOS Linux release 7.0。

如何确定是OpenSSH還是SSH2?執行指令“ssh -V”,通過它的輸出,即可确定:

SSH2

ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on

OpenSSH

OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

本文假設被登入的遠端機器名為hadoop-138-24,對應的IP為192.168.138.24,使用的使用者名為hadoop。

第一步,修改所有被登入機上的sshd配置檔案/etc/ssh/sshd_config:

1) 将PermitRootLogin值設定為yes,也就是取掉前面的注釋号#(如果不是配置root無密碼登入,跳過這一步)

2) 以下幾行注釋取消:

#RSAAuthentication=yes

#PubkeyAuthentication=yes

#AuthorizedKeysFile=.ssh/authorized_keys

PubkeyAuthentication僅針對ssh2,預設為yes,是以可不取消注釋。

RSAAuthentication僅針對ssh1,預設為yes,是以可不取消注釋。

AuthorizedKeysFile預設為.ssh/authorized_keys,是以也可不取消注釋。

可以通過“man sshd_config”了解到更多資訊。

檢視OpenSSH的版本:

# sshd -V

unknown option -- V

OpenSSH_6.4p1, OpenSSL 1.0.1e-fips 11 Feb 2013

3) 重新開機sshd服務:service sshd restart

手工啟動方式:

/usr/sbin/sshd -o pidFile=/var/run/sshd_56000.pid -f /etc/ssh/sshd_config.l

或者:

/usr/sbin/sshd -D -f /etc/ssh/sshd_config.l

參數“-D”表示sshd程序不成為守護程序。

如果不指定參數“-o”,則預設為/var/run/sshd.pid,存儲了sshd守護程序的pid。

/etc/ssh/sshd_config檔案中的Protocol配置項指定sshd支援的協定版本,如:

“Protocol 2”表示為ssh2,多版本使用逗号分隔(無順序要求):Protocol 1,2或Protocol 2,1。

對于OpenSSH_5.3p1預設值為2,1。對于OpenSSH_6.4p1預設值為2。

第二步,在所有登入機上,執行以下步驟:

1) 進入到使用者HOME目錄下的.ssh子目錄:cd ~/.ssh

2) 生成私鑰和公鑰檔案:ssh-keygen -t rsa

出現提示後,一路直接回車。成功之後,會在使用者的主目錄(HOME目錄)下生成私鑰檔案id_rsa,和公鑰檔案id_rsa.pub。

3) 運作ssh-copy-id,将公鑰檔案id_rsa.pub上傳到遠端被登入的機器:

ssh-copy-id -i id_rsa.pub hadoop@hadoop-138-24

注意,這裡沒有指定遠端機器的目錄,ssh-copy-id指令會自動将id_rsa.pub的内容放到遠端機器的hadoop使用者的主目錄的.ssh子目錄的authorized_keys檔案尾。

如果沒有ssh-copy-id指令,則可以使用scp複制過去,手工追加到authorized_keys檔案尾,如:scp id_rsa.pub hadoop@hadoop-138-24:/data/hadoop/.ssh(這裡假設hadoop使用者的HOME目錄為/data/hadoop),然後登入hadoop-138-24,進入/data/hadoop/.ssh,執行:

cat id_rsa.pub >> authorized_keys

接下來,就可以無密碼登入遠端機器:ssh hadoop@hadoop-138-24。當然也可以以IP方式登入,如:ssh [email protected]

如果按上述操作的之後,仍然不能免密碼登入,則檢查目錄.ssh的權限,如同下面這樣:

drwxrwxr-x 2 hadoop hadoop 4096 Nov 24 14:27 .ssh

則是登入時仍然需要密碼,需要去掉其他使用者對.ssh目錄的寫權限:

drwx------ 2 hadoop hadoop 4096 Nov 24 14:27 .ssh

對被登入機器上的檔案authorized_keys也有同樣的要求,下面這樣是OK的:

-rw------- 1 hadoop hadoop  403 Nov 24 14:27 authorized_keys

相關參考:

繼續閱讀