本實驗的目的是要設定兩個節點間的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...