兩個openssh間免密碼登入

2021-09-21 04:26:50 字數 2674 閱讀 7139

以下針對的是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

相關參考:

ssh2免密碼登入openssh:

兩個ssh2間免密碼登入:

openssh免密碼登入ssh2:

SSH2免密碼登入OpenSSH

openssh免密碼登入ssh2 兩個ssh2間免密碼登入 執行命令 ssh v 通過它的輸出,即可確定 ssh2 ssh ssh secure shell 3.2.9.1 non commercial version on openssh openssh 5.3p1,openssl 1.0.0 f...

Linux多節點間的免密碼登入設定

四台主機 以centos為例 192.168.80.129 master 192.168.80.130 worker1 192.168.80.131 worker2 192.168.80.132 worker3 修改主機名 修改主機名,分別為 master worker1 worker2 worke...

取得兩個間的Strings

在google上面看到的.也許有人有用.ff cccddd eee11 jkjl 1.print join map grep 會列印出 ff ccc ddd eee 11jkjl 2.不包含 print join map grep and and m 列印出ccc ddd eee 3.不包含 pri...