SSH是遠端登入Linux系統的工具,Linux系統預設安裝都包含SSH服務端,用戶端可以通過指令:ssh 伺服器IP位址(例:ssh 192.168.100.1)或者SSH用戶端軟體登入到Linux伺服器。但是,預設的SSH登入方式要求使用者輸入伺服器目标賬号的密碼。為了避免繁瑣的密碼輸入,可以為SSH配置免密碼登入。具體配置如下:
假設伺服器IP位址:192.168.100.1;用戶端IP位址:192.168.100.2。
1. 伺服器端執行指令:“james@ubuntu:~$ ssh-keygen -t rsa”,在這個過程中會要求輸入密碼。為了配置無密碼登入,直接回車,過程如下:
james@ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key(/home/james/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in/home/james/.ssh/id_rsa.
Your public key has been saved in /home/james/.ssh/id_rsa.pub.
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 [email protected]:~/.ssh/authorized_keys”将伺服器“~/.ssh”目錄下的“id_rsa.pub”拷貝到用戶端“~/.ssh”目錄下的“authorized_keys”。
4. 執行“ssh [email protected]”登入到用戶端(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/[email protected]:~/.ssh/authorized_keys” ,用用戶端“~/.ssh”目錄下的“authorized_keys”替換伺服器端的“~/.ssh”目錄下的“authorized_keys”。
7. 至此,伺服器(192.168.100.1)和用戶端(192.168.100.2)之間的無密碼登入就完成了。
8. 伺服器端使用指令:“ssh [email protected]”可無須輸入密碼,直接登入到用戶端。
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)
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”登入伺服器了。