天天看點

SSH無密碼登入:隻需兩個簡單步驟 (Linux)

最後更新

2017年4月8日

分類 最新文章 伺服器安全 标簽 RSA SSH Key 非對稱加密

如果你管理一台Linux伺服器,那麼你就會知道每次SSH登入時或者使用scp複制檔案時都要輸入密碼是一個多麼繁瑣的過程.這篇教程介紹使用SSH Key來實作SSH無密碼登入,而且使用scp複制檔案時也不需要再輸入密碼.除了友善SSH登入,scp複制檔案外,SSH無密碼登入也為Linux伺服器增加了又一道安全防線.

SSH無密碼登入的設定步驟

  1. 首先我們在自己的Linux系統上生成一對SSH Key:SSH密鑰和SSH公鑰.密鑰儲存在自己的Linux系統上。
  2. 然後公鑰上傳到Linux伺服器.之後我們就能無密碼SSH登入了.SSH密鑰就好比是你的身份證明.

1在自己的Linux系統上生成SSH密鑰和公鑰

打開終端,使用下面的ssh-keygen來生成RSA密鑰和公鑰.-t表示type,就是說要生成RSA加密的鑰匙.

ssh-keygen -t rsa      

RSA也是預設的加密類型.是以你也可以隻輸入ssh-keygen.預設的RSA長度是2048位.如果你非常注重安全,那麼可以指定4096位的長度.

ssh-keygen -b 4096 -t rsa      

生成SSH Key的過程中會要求你指定一個檔案來儲存密鑰,按Enter鍵使用預設的檔案就行了.然後需要輸入一個密碼來加密你的SSH Key.密碼至少要20位長度.SSH密鑰會儲存在home目錄下的.ssh/id_rsa檔案中.SSH公鑰儲存在.ssh/id_rsa.pub檔案中.

Generating public/private rsa key pair.     Enter file in which to save the key (/home/matrix/.ssh/id_rsa):  按Enter鍵     Enter passphrase (empty for no passphrase):   輸入一個密碼     Enter same passphrase again:   再次輸入密碼     Your identification has been saved in /home/matrix/.ssh/id_rsa.     Your public key has been saved in /home/matrix/.ssh/id_rsa.pub.     The key fingerprint is:     e1:dc:ab:ae:b6:19:b0:19:74:d5:fe:57:3f:32:b4:d0 matrix@vivid     The key's randomart image is:     +---[RSA 4096]----+     | .. |     | . . |     | . . .. . |     | . . o o.. E .|     | o S ..o ...|     | = ..+...|     | o . . .o .|     | .o . |     | .++o |     +-----------------+      

檢視.ssh/id_rsa檔案就會看到,這個檔案是經過加密的(encrypted).也就是用你輸入的密碼來加密.

less .ssh/id_rsa      
SSH無密碼登入:隻需兩個簡單步驟 (Linux)

2将SSH公鑰上傳到Linux伺服器

可以使用ssh-copy-id指令來完成.

ssh-copy-id username@remote-server      
SSH無密碼登入:隻需兩個簡單步驟 (Linux)

輸入遠端使用者的密碼後,SSH公鑰就會自動上傳了.SSH公鑰儲存在遠端Linux伺服器的.ssh/authorized_keys檔案中.

上傳完成後,SSH登入就不需要再次輸入密碼了.但是首次使用SSH Key登入時需要輸入一次SSH密鑰的加密密碼.(隻需要輸入一次,将來會自動登入,不再需要輸入密鑰的密碼.)

使用scp指令來傳送檔案時也不需要輸入密碼.

SSH Key的知識

Linux系統有一個鑰匙環(keyring)的管理程式.鑰匙環受到使用者登入密碼的保護.當你登入Linux系統時,會自動解開鑰匙環的密碼,進而可通路鑰匙環.SSH的密鑰和公鑰也存儲在鑰匙環.是以初次使用SSH密鑰登入遠端Linux伺服器時需要輸入一次SSH密鑰的密碼.而将來使用SSH密鑰登入時不再輸入密碼.Ubuntu的鑰匙環程式是seahorse.

SSH密鑰就好比是你的身份證明.遠端Linux伺服器用你生成的SSH公鑰來加密一條消息,而隻有你的SSH密鑰可以解開這條消息.是以其他人如果沒有你的SSH密鑰,是無法解開加密消息的,進而也就無法登入你的Linux伺服器.

SSH無密碼登入的設定就是這麼簡單。

繼續閱讀