跳至主要內容

透過 SSH 金鑰登入 Linux 主機

Pamis Wang大约 2 分鐘作業系統SSHLinux

前言

每次登入 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
上次編輯於:
貢獻者: pamis,EXMAIL\pamis,Pamis Wang,Pamis Wang