openssh#

OpenSSH 由 OpenBSD Project 的幾位開發者開發,並以 BSD 風格的授權發布。


Introduction#

OpenSSH 是遠端登入 SSH 協定的首選連接工具。它會加密所有流量,以消除竊聽、連線劫持及其他攻擊。此外,OpenSSH 提供大量安全隧道功能、多種驗證方法及複雜的設定選項。


Install#

$ sudo apt install openssh-server

Setting 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-server

ssh-copy-id#

# 將公鑰複製到遠端主機
$ ssh-copy-id user@host
# 加上 -i 指定私鑰檔案
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

ssh-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 host

Reference#

Official docs:

OpenSSH