SSH是遠程登陸Linux系統的工具,Linux系統默認安裝都包含SSH服務端,客戶端能夠經過命令:ssh 服務器IP地址(例:ssh 192.168.100.1)或者SSH客戶端軟件登陸到Linux服務器。可是,默認的SSH登陸方式要求用戶輸入服務器目標帳號的密碼。爲了不繁瑣的密碼輸入,能夠爲SSH配置免密碼登陸。具體配置以下:ubuntu
假設服務器IP地址:192.168.100.1;客戶端IP地址:192.168.100.2。服務器
1. 服務器端執行命令:「james@ubuntu:~$ ssh-keygen -t rsa」,在這個過程當中會要求輸入密碼。爲了配置無密碼登陸,直接回車,過程以下:dom
james@ubuntu:~$ ssh-keygen -t rsassh
Generating public/private rsa key pair.ide
Enter file in which to save the key(/home/james/.ssh/id_rsa): 工具
Enter passphrase (empty for no passphrase):spa
Enter same passphrase again: server
Your identification has been saved in/home/james/.ssh/id_rsa.同步
Your public key has been saved in /home/james/.ssh/id_rsa.pub.it
The key fingerprint is:
c8:7d:5b:4f:00:51:1f:b5:3c:51:cf:8c:4b:14:82:53james@ubuntu
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
| o=E +++|
| o. +.=+|
| .. +++|
| . o o ..|
| o S . . o |
| . o o |
| . . |
| |
| |
+-----------------+
james@ubuntu:~$
2. 完成以上步驟以後,執行「cd ~/.ssh」切換到SSH目錄,發現生成了新文件:
james@ubuntu:~$ cd ~/.ssh
james@ubuntu:~/.ssh$ ll
total 16
drwx------ 2 james james 4096 Sep 4 21:51 ./
drwxr-xr-x 20 james james 4096 Aug 30 13:14../
-rw------- 1 james james 1675 Sep 4 21:51id_rsa
-rw-r--r-- 1 james james 394 Sep 4 21:51 id_rsa.pub
james@ubuntu:~/.ssh$
3. 執行「james@ubuntu:~/.ssh$ scp id_rsa.pubjames@192.168.100.2:~/.ssh/authorized_keys」將服務器「~/.ssh」目錄下的「id_rsa.pub」拷貝到客戶端「~/.ssh」目錄下的「authorized_keys」。
4. 執行「ssh james@192.168.100.2」登陸到客戶端(192.168.0.2)的james帳號,此時配置還沒有完成,仍然須要用戶輸入密碼。登陸以後,同步驟1生成客戶端的「id_rsa.pub」文件。
5. 執行「james@ubuntu:~/.ssh$ cat id_rsa.pub >> authorized_keys」,將「id_rsa.pub」文件添加到「authorized_keys」文末。完成這個步驟以後,服務器端公鑰和客戶端公鑰都保存在客戶端的「~/.ssh/ authorized_keys」文件中;而服務器的「~/.ssh/ authorized_keys」文件僅包含服務器本身的公鑰。
6. 客戶端執行「james@ubuntu:~/.ssh$ scp ~/.ssh/authorized_keysjames@192.168.100.1:~/.ssh/authorized_keys」 ,用客戶端「~/.ssh」目錄下的「authorized_keys」替換服務器端的「~/.ssh」目錄下的「authorized_keys」。
7. 至此,服務器(192.168.100.1)和客戶端(192.168.100.2)之間的無密碼登陸就完成了。
8. 服務器端使用命令:「ssh james@192.168.100.2」可無須輸入密碼,直接登陸到客戶端。
9. Ubuntu 14可能會報「Error:Agent admitted failure to sign」錯誤,而且仍然要求用戶輸入密碼才能登陸。解決方法是:分別在登陸服務器和客戶端的帳號,執行「james@ubuntu:~/.ssh$ ssh-add」命令,以下所示:
james@ubuntu:~/.ssh$ ssh-add
Identity added:/home/james/.ssh/id_rsa (/home/james/.ssh/id_rsa)
james@ubuntu:~/.ssh$
10. 若是以爲每次輸入IP地址比較麻煩,能夠執行「james@ubuntu:~/.ssh$ sudo vi /etc/hosts」配置「/etc/hosts」文件,內容以下:
127.0.0.1 localhost
127.0.1.1 ubuntu
192.168.100.1 server
192.168.100.2 client
客戶端的「/etc/hosts」文件應該和服務器的「/etc/hosts」內容一致。
11. 之後服務器登陸客戶端可使用「ssh james@client」代替「ssh 192.168.100.2」;客戶端使用「ssh james@server」代替「ssh 192.168.100.1」登陸服務器了。