簡介 #
OpenSSH(Open Secure Shell)是一套開放原始碼的安全通訊工具組,用於在不安全的網路中安全地進行遠端連線、檔案傳輸與其他網路服務。它由 OpenBSD 團隊開發,目的是取代早期不安全的 Telnet、rlogin、FTP 等協定。
主要功能 #
-
遠端連線(
ssh
) 讓你可以安全地登入遠端主機、執行指令。 -
檔案傳輸(
scp
、sftp
) 透過加密連線傳送、接收檔案。 -
金鑰認證 支援 SSH 金鑰對驗證,提高安全性、避免密碼被盜。
-
遠端指令執行、轉發連線 可以執行遠端命令,或做端口轉發(如 tunnel VPN)。
常用工具 #
-
ssh
:連線與登入遠端主機 -
ssh-keygen
:產生公私鑰對 -
scp
:加密檔案複製 -
sftp
:類似 FTP 但走 SSH 通道 -
ssh-agent
:管理私鑰、無密碼自動登入
安裝 #
基本上不管是 Windows, Mac, 或是 Linux, 現在系統幾乎都有內建 OpenSSH 了。理論上不需要再額外的安裝。
可以在終端機輸入
which ssh-keygen
來確認有無這個指令。
Windows 用戶可以用
where ssh-keygen
或是Get-Command ssh-keygen
如果沒有的話,在 Settings > System > Optional features. Add a feature, 然後選擇安裝 OpenSSH Clinet 與 OpenSSH Server.
簡易使用 #
在大部分的使用上,你可以簡單的只是用一個 SSH 金鑰,並用預設的金鑰名稱。 只要在終端機輸入:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
輸入後只要一直按 Enter 使用預設值就好。
這樣它會在 ~/.ssh/
裡面創設兩個檔案: id_rsa
與 ids_rsa.pub
。
其中 id_rsa
是你的私密金鑰,絕對不能告訴別人。
id_rsa.pub
則使公開的金鑰,可以上傳到別的伺服器(譬如: GitHub)。
顯示公開金鑰的內容可以用:
cat ~/.ssh/id_rsa.pub
然後複製就好。
Windows 用戶 #
cat
指令。
如果是 Windows 使用者的話可以在 PowerShell 中輸入:
type C:\Users\你的帳號\.ssh\id_rsa.pub
或是
Get-Content $env:USERPROFILE\.ssh\id_rsa.pub
進階使用 #
ED25519 金鑰 #
如果不想用 RSA 金鑰,只要在創立時使用 -t ed25519
就可以改用 ED25519 金鑰。
ssh-keygen -t ed25519 -C "your_email@example.com"
多組金鑰與管理 #
如果你想要在不同的伺服器使用不同的金鑰,可以在創立時添加 -f
來指定金鑰的檔名:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_example1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_example2
如果有多把金鑰,手動每次都輸入密碼很麻煩。這時可以啟用 ssh-agent
幫你記住解鎖後的金鑰。
macOS/Linux #
eval "$(ssh-agent -s)"
Windows #
Start-Service ssh-agent
加入金鑰 #
ssh-add ~/.ssh/id_rsa_example1
Windows 用戶:
ssh-add $env:USERPROFILE\.ssh\id_rsa_example1
查看已加入的金耀 #
ssh-add -l
移除金鑰 #
ssh-add -d ~/.ssh/id_rsa_example1
小技巧 #
- 私鑰務必妥善保存,不可外洩。
- 建議每把金鑰都設密碼,安全性更高。
- 若經常重啟 terminal,可將
eval "$(ssh-agent -s)"
與常用ssh-add
指令寫進啟動腳本(如.bashrc
或.zshrc
)。