openssh#
OpenSSH 由 OpenBSD Project 的幾位開發者開發,並以 BSD 風格的授權發布。
Introduction#
OpenSSH 是遠端登入 SSH 協定的首選連接工具。它會加密所有流量,以消除竊聽、連線劫持及其他攻擊。此外,OpenSSH 提供大量安全隧道功能、多種驗證方法及複雜的設定選項。
Install#
$ sudo apt install openssh-serverSetting in up#
edit /etc/ssh/sshd_config
# Allow root login
# prohibit-password 允許root透過SSH金鑰登入,但不允許使用密碼, yes 允許 , no 不允許
PermitRootLogin prohibit-password Operate#
ssh#
#基本連線
$ ssh user@host
# 指定端口連線
$ ssh -p <port> user@host
# 遠端指令執行 (連線後執行 "ls -la" 即斷線,不進入 Shell)
$ ssh user@host "ls -la /var/www"
# 調試模式 (顯示連線詳情,可用 -vv 或 -vvv 查看更細資訊)
$ ssh -v user@host
# 遠端轉發 (-R)
# 情境:讓遠端主機透過它的 8080 端口,連線回我本機的 3000 端口 (讓外網存取內網服務)
$ ssh -R 8080:localhost:3000 user@host
# 本地轉發 (-L)
# 情境:我想用本機的 8080 端口,連線到遠端主機看得到的 localhost:80
$ ssh -L 8080:localhost:80 user@host
# 動態轉發 (-D)
# 情境:在本機 1080 建立 SOCKS 代理,讓瀏覽器流量都經過 SSH 隧道出去
$ ssh -D 1080 user@host
# 背景建立隧道 (-f -N)
# 情境:只想建立轉發通道,不需要執行指令(-N)且在背景執行(-f)
$ ssh -f -N -L 8080:localhost:80 user@host
# 認證代理轉發 (-A)
# 情境:連到堡壘機(Jump Server)後,想再從堡壘機連到內網機器,並沿用本機的私鑰
$ ssh -A user@jump-serverssh-copy-id#
# 將公鑰複製到遠端主機
$ ssh-copy-id user@host
# 加上 -i 指定私鑰檔案
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostssh-keygen#
# 執行 ssh-keygen 命令後,系統會提示輸入檔案路徑(預設存在 ~/.ssh/id_rsa)
$ ssh-keygen
# 可用選項指定金鑰類型,如 -t rsa(RSA金鑰)、-t ed25519(新版且安全性更高)等,及金鑰長度 -b
$ ssh-keygen -t ed25519 -b 4096
#從 known_hosts 檔案中刪除該主機的相應條目,並保留原始檔案的備份 (~/.ssh/known_hosts.old)
$ ssh-keygen -R hostReference#
Official docs: