如何設定 Linux 使用 SSH Key-based 登入驗證方式,使用 PuTTY 登入 Linux 伺服器
最近公司架台內部使用的 Linux 機器,原先是輸入 MIS 所設定的帳號密碼登入,但保管帳號密碼顯得有點難以記憶,因此想到可以使用公開金鑰認證 (Public Key Authentication) 方式,不用輸入密碼而是提供私密金鑰來進行登入。
建立一組金鑰
where program_name
查詢,均是經由安裝 Git,其 bin 所提供…
先本機端輸入指令建立金鑰:
ssh-keygen
依照指令提示輸入檔名 (Windows 會將金鑰建立在當前目前目錄下):
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa)
輸入是否有密碼保護,直接按 Enter 表示私密金鑰不加密 (Private Key):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
完成建立出現的訊息:
Your identification has been saved in server.
Your public key has been saved in server.pub.
The key fingerprint is:
c0:6e:89:4a:ad:85:ea:fc:4a:c9:ff:08:81:95:b5:99 user@Twsiyuan
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| o = |
| o E o |
|.. o o o |
|..o + + S |
|.oo+ . |
|.=o |
|+ o . |
| +o+.. |
+-----------------+
假設檔名輸入為 server,產生 server 以及 server.pub,因為副檔名個人偏好,手動將 server 改名為 server.pem。
金鑰複製到遠端 Linux
複製公開金鑰 (Public Key) 到遠端 Linux 伺服器,考慮以下指令,username 以及 remote_host 替換成登入的帳號以及遠端伺服器的位置:
cat server.pub | ssh username@remote_host "mkdir ~/.ssh && cat >> ~/.ssh/authorized_keys"
會要求先輸入密碼登入,登入完成才會將公開金鑰複製到遠端伺服器。
通常經過複製後,就可以跳到一節,使用私密金鑰進行登入嘗試。若依然發生錯誤,則需要使用密碼登入遠端伺服器,查看編輯 ssh 設定:
sudo vi /etc/ssh/sshd_config
確認有開啟公開金鑰認證登入方式,
PubkeyAuthentication yes
以及可用的公開金鑰檔名位置為以下:
AuthorizedKeysFile .ssh/authorized_keys
甚至關閉密碼認證登入,改成僅允許金鑰認證,避免惡意猜密碼攻擊:
PasswordAuthentication no
PubkeyAuthentication yes
修改完設定後,若使用 CentOS 7.0 以下版本,輸入以下指令重新啟動 ssh 登入服務:
sudo service sshd restart
如果在 CentOS 7.0 以上的版本:
sudo sysemctl restart sshd.service
使用私密金鑰登入
ssh 登入採用私密金鑰:
ssh -i "server.pem" username@remote_host
如果是在 Windows 使用 PuTTY,首先先將 server.pem 換成 server.ppk,開啟 PuTTYgen,點選 load 按鈕載入 server.pem。
確認 key 類型為 RSA,按下 Save private key 儲存私密金鑰為 server.ppk:
接著開啟 PuTTY,在 Category > Session 填入登入帳號與遠端伺服器位置:
Category > Connection > Auth 設定私密金鑰檔案位置:
之後直接按下 Open 便可利用私密金鑰登入伺服器。但每次設定有點麻煩,可以回到 Category > Session,將目前設置儲存:
之後滑鼠點擊該 Session 便可以直接套用之前的設定,直接進行登入驗證。
沒有留言: