[分享创造] 写了一个基于命令行的 SSH 客户端——knot

knot 是一个命令行 SSH/SFTP 管理工具。 我做它的想法很简单:现代终端已经足够好用了,Windows Terminal 、Ghostty 、Kitty 这类终端在显示效果、快捷键、标签页、甚至 GPU 渲染上都做得不错。 但纯终端软件往往不带 SSH 连接管理功能,而直接用原生 ssh ...
[分享创造] 写了一个基于命令行的 SSH 客户端——knot
[分享创造] 写了一个基于命令行的 SSH 客户端——knot

knot 是一个命令行 SSH/SFTP 管理工具。

我做它的想法很简单:现代终端已经足够好用了,Windows Terminal 、Ghostty 、Kitty 这类终端在显示效果、快捷键、标签页、甚至 GPU 渲染上都做得不错。

但纯终端软件往往不带 SSH 连接管理功能,而直接用原生 ssh 命令又会有一些不太顺手的地方:服务器多了以后,凭据和密钥口令不好管理,代理和跳板机参数难记,传文件、端口转发又要切换不同命令和用法。

Knot 想做的是“连接体验”:继续使用任何你喜欢的现代终端,同时用简单命令完成复杂的 SSH 连接配置。

安装

Linux / macOS:

curl -fsSL https://knot.clay.li/i/install.sh | sh

Windows PowerShell:

irm https://knot.clay.li/i/install.ps1 | iex

Shell 补全

Knot 内置了对 Bash 、Zsh 、Fish 和 PowerShell 的补全支持。

Bash
# 当前会话立即启用
source <(knot completion bash)

# 为当前用户永久启用
mkdir -p ~/.local/share/bash-completion/completions && knot completion bash > ~/.local/share/bash-completion/completions/knot

请确认系统已安装并加载 bash-completion

Zsh
# 当前会话立即启用
autoload -U compinit && compinit && source <(knot completion zsh)

# 为当前用户永久启用
mkdir -p ~/.zfunc && knot completion zsh > ~/.zfunc/_knot && grep -qxF 'fpath=("$HOME/.zfunc" $fpath)' ~/.zshrc || printf '\nfpath=("$HOME/.zfunc" $fpath)\nautoload -U compinit && compinit\n' >> ~/.zshrc
Fish
# 当前会话立即启用
knot completion fish | source

# 为当前用户永久启用
mkdir -p ~/.config/fish/completions && knot completion fish > ~/.config/fish/completions/knot.fish
PowerShell
# 当前会话立即启用
knot completion powershell | Out-String | Invoke-Expression

# 为当前用户永久启用
if (!(Test-Path $PROFILE)) { New-Item -ItemType File -Force $PROFILE | Out-Null }; if (-not (Select-String -Path $PROFILE -SimpleMatch 'knot completion powershell | Out-String | Invoke-Expression' -Quiet -ErrorAction SilentlyContinue)) { Add-Content -Path $PROFILE -Value "`nknot completion powershell | Out-String | Invoke-Expression" }

另外一些“顺手”的功能

  • 连接复用:后台 daemon 维护 SSH 物理连接,后续打开新 shell 、执行命令或传文件时可以复用已有连接,减少重复握手、认证。
  • SSH Agent 认证支持:可以使用系统里的 SSH Agent ,支持 1Password 、Bitwarden 等。
  • Agent 转发支持:连接到远程服务器后,也可以继续使用本机 Agent 做后续认证。
  • 平台原生加密:密码、密钥口令等敏感信息会加密保存,优先使用 Windows DPAPI 、macOS Keychain 、Linux Secret Service 等平台能力。
  • 文件传输knot cp ./dist/. myserver:/var/www/html/,Docker 风格的 alias:/path 语法,/. 后缀表示拷贝目录内容而非目录本身。
  • AI 友好:部分命令支持结构化输出和非交互用法,适合脚本、CI 或 AI 编码助手调用。

项目地址:https://github.com/2cydg/knot

官网还在开发中。README 中只列出了部分命令,可执行 knot --help 来查看完整命令列表。

knot 还在早期阶段,如果你感兴趣,欢迎试试看,也欢迎提 Issue 或参与改进。

来源: v2ex.com查看原文