互動式 Shell¶
當不指定遠端命令時,win-sshpass 會開啟一個互動式 Shell,採用原始終端模式,提供接近原生 SSH 的體驗。
基本使用¶
# 使用密碼
win-sshpass -p 'password' ssh user@host
# 使用私鑰
win-sshpass -i ~/.ssh/id_ed25519 ssh user@host
# 使用設定檔
win-sshpass -f server.config
原始終端模式特性¶
正確的回顯¶
輸入的字元會正確顯示,不會出現雙重回顯問題。這得益於本地終端被設定為 raw 模式。
訊號轉發¶
- Ctrl+C — 中斷當前遠端程序
- Ctrl+Z — 暫停當前遠端程序
全螢幕應用支援¶
以下應用可以正常使用:
vim/nvim— 文字編輯器top/htop— 系統監控nano— 文字編輯器less/more— 分頁檢視mc(Midnight Commander) — 檔案管理器
動態終端調整¶
當你調整本地終端視窗大小時,遠端終端會自動匹配新的尺寸。這透過 SSH 的 window-change 請求實現。
Tab 補全¶
遠端 Shell 的 Tab 補全功能正常工作。
檔案傳輸(rz/sz)¶
在互動式 Shell 中,可以直接使用 rz 和 sz 命令進行檔案傳輸:
# 在遠端 Shell 中:
rz # 上傳檔案(開啟檔案選擇器)
rz /local/path/to/file # 上傳指定本地檔案
sz /remote/path/to/file # 下載檔案(開啟儲存對話框)
sz /remote/path/to/file /local # 下載到指定本地路徑
工作原理
當遠端 Shell 報告 rz/sz: command not found 時,win-sshpass 會攔截該錯誤,並透過 SFTP 執行傳輸。無需在遠端伺服器上安裝 lrzsz。
自訂檔案選擇器¶
預設情況下,rz/sz 使用系統檔案對話框(透過 zenity 實作)。如果需要自訂,可以透過 Go SDK 的 WithFileSelector 選項注入。
與標準 SSH 的區別¶
| 特性 | 標準 SSH | win-sshpass |
|---|---|---|
| 密碼認證 | 需要 ssh-agent | 原生支援 |
| Windows 支援 | 需要安裝 OpenSSH | 獨立可執行檔 |
| rz/sz 傳輸 | 需要遠端安裝 lrzsz | 內建 SFTP 回退 |
| 進度條 | 無 | SFTP 傳輸時顯示 |