2014年12月30日 星期二

Ubuntu:SSH無密碼登入

如果機器A在登入其他N台機器時想要無密碼登入可以透過公開金鑰的概念,在自己的機器上產生一對「公鑰」和「密鑰」然後把公鑰給這N台機器,這樣N台機器有了A的公鑰就可以進行解密並通訊。

通常在一個cluster中會以一台機器作為master,在這台機器上登入其它機器,如Hadoop的master,接著會說明如何配置從master以SSH無密碼方式登入到所有機器。

一、修改hosts文件,設有三台機器
vi /etc/hosts
    192.168.121.128 master
    172.17.0.28 slave1
    172.17.0.29 slave2

二、在設定之前先清除已經ssh的連線     

rm -rf ~/.ssh/*    

三、在master上產生一對金鑰

ssh-keygen -q -N "" -t rsa -f ~/.ssh/id_rsa

四、將公鑰拷貝到自己

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

五、將公鑰拷貝到其他機器,這裡仍須輸入密碼,因為僅將公鑰丟過去並未寫入authorized_keys。

scp ~/.ssh/id_rsa.pub root@slave1:~/.ssh/id_rsa.pub
scp ~/.ssh/id_rsa.pub root@slave2:~/.ssh/id_rsa.pub   

六、以ssh登入對方機器,並將public_key寫入到authorized_keys才能免密碼登入

ssh root@slave1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh root@slave2
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

七、若不在意安全性,可以考慮直接將~/.ssh資料夾copy過去即可。

scp -r ~/.ssh root@slave1:~

六、測試

ssh root@slave1

沒有留言:

張貼留言