透過 SSH 金鑰登入 Linux 主機
大约 2 分鐘
前言
每次登入 Linux 主機都要打密碼,
常常手殘打錯,所以又要來當懶人了。
透過設定 SSH 金鑰使登入 Linux 主機不需要打密碼,
本篇教學以 Windows 作業系統連線 Linux 的情境為例子。
事前準備
要確定 Linux 主機有安裝 SSH 並且開通對應的 Port
一般預設都是 22 Port
不會安裝的可以參考文件 使用 VMware 虛擬機建置 Ubuntu 作業系統
加入 SSH 金鑰
金鑰建立與設定
參考文件 SSH 金鑰建立與設定
建立金鑰列表檔案
在想要連線的 Linux 主機內建立 authorized_keys 檔案
mkdir .ssh
cd ~/.ssh
nano authorized_keys
填寫金鑰列表檔案
將 Windows 產生的 公鑰複製貼上到 authorized_keys 檔案內
設定金鑰列表檔案權限
cd ~/.ssh
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*
進行連線
使用命令提示字元
使用 ssh 進行連線指令
如有多個私鑰 -i 參數指定要使用的私鑰檔:
如果不是使用 SSH 預設的 22 port,可使用 -p 參數指定 port:
ssh pamis@xxx.xxx.xxx.xxx -i C:\Users\pamis\.ssh\id_rsa_ubuntu
使用 Visual Studio Code
設定連線設定檔案
Host LabServer #填寫別名
HostName xxx.xxx.xxx.xxx #主機名稱或是ip位置
Port #如果有指定的Port號
User username #登入的使用者名稱
PreferredAuthentications publickey #首選驗證方式
IdentityFile ~/.ssh/id_rsa_ubuntu #私鑰路徑
實際可參考
Host 我的主機
HostName 192.168.100.100
User pamis
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_ubuntu
使用 Putty
由於 Putty 只接受 ppk 格式的私鑰
所以需要先匯入現有的私鑰並轉換 ppk 格式
匯入到 PuTTYgen
- 點選 Load
- 選擇所有檔案並匯入私鑰檔案
- 點選 Save private key 另存 .ppk 格式
設定 Putty 連線
- 用戶名稱:Connection > Data > Auto-login username
- 私鑰檔案:Connection > SSH > Auth
- 記得存檔
root 登入
建立資料夾與檔案
cd /root
mkdir .ssh
cd .ssh
nano authorized_keys
加入公鑰字串
修改 ssh 的設定
sudo nano /etc/ssh/sshd_config
開放 root 登入
在下面加入一行
#PermitRootLogin prohibit-password
PermitRootLogin yes
更改完存檔後記得重啟服務
sudo systemctl restart sshd
重啟錯誤處理
如果重啟失敗出現如下訊息
Failed to start sshd.service: Unit sshd.service not found.
則要先將系統與服務管理器啟用 SSH 服務
sudo systemctl enable ssh.service