天天看點

SSH免密碼登入設定

    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”登入伺服器了。

繼續閱讀