歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu ssh 無密碼登錄

Ubuntu ssh 無密碼登錄

日期:2017/2/28 15:29:38   编辑:Linux教程

當超過3台機器搞到一起, 管理起來就會陷入混亂不堪. 因此需要證書登錄的方式來管理服務器集群. master節點可以直接ssh登錄到數據節點. 控制節點可以直接登錄到被控制的節點.

借用C/S的概念, 客戶機需要安裝openssh-client, 服務器需要安裝openssh-server. 其實我們很快會分布清楚哪些是服務,哪些是客戶. 因此所有機器上都安裝openssh, 你可以檢查是否安裝了它們:

$ apt-cache policy openssh-client

$ apt-cache policy openssh-server

也可以直接安裝它們:

$ sudo apt-get install openssh-client

$ sudo apt-get install openssh-server

另外需要安裝一個ssh無交互式密碼登陸的軟件sshpass, 這樣我們就可以把密碼寫到命令行裡. 從而使無人工干預的腳本安裝過程成為可能.

$ sudo apt-get install sshpass

安裝完畢之後, 你可以在任何一台UbuntuA訪問另外一台ubuntuB

$ sshpass -p abc123 ssh car@ubuntuB

其中:

car是ubuntuB的用戶名, 我們這裡假設A, B用戶名都是car

abc123是car的密碼

借用這個技術, 你可以輕松登陸每台機器而不需要交互式地輸入密碼.但這絕對是不安全的, 這個僅僅是安裝階段的腳本.

ssh證書登錄方式:

假設我們想要在ubuntuA訪問另外一台ubuntuB, 於是我們需要在A上生成公鑰密鑰對. 然後把公鑰拷貝到B上, 在B上把公鑰加入當前用戶的.ssh/authorized_keys裡. 然後在A上就可以直接登錄B了.

1) 在A上生成公鑰密鑰對

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

可以看到

/home/car/.ssh/id_rsa

/home/car/.ssh/id_rsa.pub

2個文件.

2) 把id_rsa.pub拷貝到B機器上

$ scp ./.ssh/id_rsa.pub car@ubuntuB:~/

其中ubuntuB是IP地址, 也可以是機器名, 但是需要在A的/etc/hosts增加一項:

192.168.63.101 ubuntuB

3) 登錄到B

$ sshpass -p abc123 ssh car@ubuntuB

4) 添加id_rsa.pub到B的~/.ssh/authorized_keys裡

$ cat ./id_rsa.pub ./.ssh/authorized_keys

$ exit

5)重新在A裡登錄B

$ ssh car@ubuntuB

可以看到再不需要密碼了.

6) 假設你還有C,D,E,F...等機器也需要登錄B, 只要把在A上生成的私鑰文件id_rsa拷貝到相應的機器上就可以了.

記住,這個是不安全的操作. 一般需要給私鑰文件id_rsa設置密碼. 不在本文講述范圍.

注意: 本文雖然混合大小寫, 你應該任何時候只用小寫字母.

Copyright © Linux教程網 All Rights Reserved