設定多節點間無口令SSH登入

2021-10-10 15:47:45 字數 3343 閱讀 9349

本實驗的目的是要設定兩個節點間的ssh免密互信。這在設定hadoop集群。分布式資料庫時經常會用到。

我們的環境假設有3臺機器,即互信的兩個節點和一台客戶機。客戶機可以是雲中的跳板機或你的膝上型電腦,總之是個第三方的機器。本例使用的是我的膝上型電腦。

首先在雲中建立兩台centos 7虛機,node01和node02,在客戶機上確認可以ssh連線到這兩個主機:

ssh opc@node01

ssh opc@node02

注:在oracle公有雲oci中,預設ssh使用者是opc,並具有sudo許可權

我們的目標是設定hadoop使用者的互信,而非opc使用者的互信。

我們不準備使用ssh-copy-id來傳遞公鑰,是因為:

預設的ssh-copy-id方式需要開啟口令認證,不建議

不開啟口令認證,ssh-copy-id也可以用,但比較麻煩,過程略。

由於opc具有sudo許可權,因此不如利用ssh遠端執行指令碼,在客戶機上完成所有操作。

首先在客戶機上生成金鑰對:

$ ssh-keygen -f hadoopkey

$ ls

hadoopkey hadoopkey.pub

假設這兩個節點的ip位址分別為130.61.183.182和130.61.81.104。

$ export nodeip=130.61.183.182
然後在客戶機執行以下操作:

# 建立hadoop使用者

$ ssh opc@$nodeip "sudo useradd hadoop"

# 利用opc使用者的sudo許可權,建立.ssh目錄,設定許可權

$ ssh opc@$nodeip "sudo -u hadoop -- bash -c 'mkdir ~hadoop/.ssh && chmod 700 ~hadoop/.ssh'"

# 利用opc使用者的sudo許可權,生成公鑰檔案,設定許可權

$ cat hadoopkey.pub | ssh opc@$nodeip "sudo -u hadoop -- bash -c 'cat >> ~hadoop/.ssh/authorized_keys && chmod 600 ~hadoop/.ssh/authorized_keys'"

# 利用opc使用者的sudo許可權,生成公鑰檔案,設定許可權

$ cat hadoopkey | ssh opc@$nodeip "sudo -u hadoop -- bash -c 'cat >> ~hadoop/.ssh/id_rsa && chmod 600 ~hadoop/.ssh/id_rsa'"

# 驗證客戶機可免密登入此節點

$ ssh -i hadoopkey hadoop@$nodeip

將nodeip改為node02的ip,然後重複以上的操作。

$ export nodeip=130.61.81.104
然後node01和node01之間就可以免密登入了,驗證如下

$ ssh -i hadoopkey hadoop@node01

last login: thu nov 19 08:32:12 2020 from 202.45.129.203

[hadoop@node01 ~]$ ssh node02

the authenticity of host 'node02 (192.168.0.3)' can't be established.

ecdsa key fingerprint is sha256:5w8o6/j7ihsjhxfkzzwfktelr2zktg1jjnedwqczt3o.

ecdsa key fingerprint is md5:e5:3b:45:90:c2:5b:1b:70:46:fb:a0:73:67:88:a3:65.

are you sure you want to continue connecting (yes/no)? yes

warning: permanently added 'node02,192.168.0.3' (ecdsa) to the list of known hosts.

last login: thu nov 19 08:35:55 2020 from 202.45.129.203

[hadoop@node02 ~]$ exit

logout

connection to node02 closed.

[hadoop@node01 ~]$ ssh node02

last login: thu nov 19 08:39:37 2020 from node01.sub11110622300.vcn01.oraclevcn.com

[hadoop@node02 ~]$ ssh node01

the authenticity of host 'node01 (192.168.0.2)' can't be established.

ecdsa key fingerprint is sha256:ew+djx+0tepttkcyktjfkxtieitenonmkhevwtkvoom.

ecdsa key fingerprint is md5:2c:a9:a4:f1:c0:e2:42:62:71:5c:10:45:e4:5c:2f:e7.

are you sure you want to continue connecting (yes/no)? yes

warning: permanently added 'node01,192.168.0.2' (ecdsa) to the list of known hosts.

last login: thu nov 19 08:39:33 2020 from 202.45.129.203

[hadoop@node01 ~]$ exit

logout

connection to node01 closed.

[hadoop@node02 ~]$ ssh node01

last login: thu nov 19 08:39:51 2020 from node02.sub11110622300.vcn01.oraclevcn.com

[hadoop@node01 ~]$ exit

logout

connection to node01 closed.

[hadoop@node02 ~]$ exit

logout

connection to node02 closed.

[hadoop@node01 ~]$ exit

logout

connection to 130.61.183.182 closed.

多節點間ssh 無金鑰連線配置

在前天晚上除錯虛擬機器冷遷移的時候,發現一直不成功,我就問了同事原因。他跟我說其實遷移採用的就是scp的方式,而scp一般是需要輸入對方的金鑰,因此需要配置ssh。昨天花了一天時間,在搗鼓這個配置,沒配成功,感覺自己弱爆了,昨天晚上忽然想明白了點道理。我想實現的是非root使用者下的ssh 免密碼互...

llinux節點間ssh無密碼登入

1 安裝ssh 開啟命令列ctrl alt t sudo apt get install openssh server,openssh client 2 關閉防火牆 3 生成.ssh檔案 ssh localhost 4 在.ssh 中生成id rsa.pub cd ssh ssh keygen t ...

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...