安装与快速上手
安装
Linux 和 macOS 使用 shell 安装脚本:
sh
curl -fsSL https://knot.clay.li/i/install.sh | shWindows 使用 PowerShell 安装脚本:
powershell
irm https://knot.clay.li/i/install.ps1 | iex升级已安装的 release:
sh
knot upgrade非交互脚本中使用:
sh
knot upgrade -y-y 表示确认可以停止 daemon,并允许断开活跃 SSH 会话。从源码构建的开发版本不支持自升级。
从源码构建:
sh
go build -o knot ./cmd/knot
mkdir -p ~/.local/bin
mv knot ~/.local/bin/推荐:启用 Shell 补全
建议安装后先启用补全。Knot 的命令、子命令、服务器别名和部分参数都依赖补全提升效率;没有补全时,日常 SSH、SFTP、复制和转发操作会明显更慢。
Bash
当前 shell 临时启用:
sh
source <(knot completion bash)持久启用:
sh
mkdir -p ~/.local/share/bash-completion/completions
knot completion bash > ~/.local/share/bash-completion/completions/knotZsh
当前 shell 临时启用:
sh
autoload -U compinit && compinit
source <(knot completion zsh)持久启用:
sh
mkdir -p ~/.zfunc
knot completion zsh > ~/.zfunc/_knot
printf '\nfpath=(~/.zfunc $fpath)\nautoload -U compinit\ncompinit\n' >> ~/.zshrcFish
当前 shell 临时启用:
sh
knot completion fish | source持久启用:
sh
mkdir -p ~/.config/fish/completions
knot completion fish > ~/.config/fish/completions/knot.fishPowerShell
当前 shell 临时启用:
powershell
knot completion powershell | Out-String | Invoke-Expression持久启用:
powershell
$CompletionDir = Join-Path $HOME ".config\knot"
New-Item -ItemType Directory -Path $CompletionDir -Force | Out-Null
$CompletionPath = Join-Path $CompletionDir "completion.ps1"
knot completion powershell > $CompletionPath
if (!(Test-Path $PROFILE)) { New-Item -ItemType File -Force $PROFILE | Out-Null }
$CompletionLine = ". `"$CompletionPath`""
if (-not (Select-String -Path $PROFILE -SimpleMatch $CompletionLine -Quiet -ErrorAction SilentlyContinue)) {
Add-Content -Path $PROFILE -Value "`n$CompletionLine"
}更多细节见 Shell 补全与版本。
创建第一个服务器
最常见的非交互写法:
sh
knot add web-prod --host 1.2.3.4 --user deploy --key deploy-key --tags prod如果不提供完整参数,knot add 会进入交互式配置流程:
sh
knot add web-prod连接
完整命令是:
sh
knot ssh web-prod根命令会把未知的第一个参数重写成 SSH 连接,因此日常可以直接写:
sh
knot web-prod这个快捷写法只属于 knot ssh [alias],不会单独作为一个命令文档维护。
远程执行
sh
knot exec web-prod "uptime"
knot exec web-prod "systemctl status nginx" --jsonknot exec 会保留远程命令退出码,适合脚本和自动化。
文件传输
sh
knot cp ./dist/. web-prod:/var/www/html/
knot cp web-prod:/var/log/nginx/access.log ./远程路径使用 alias:/path 形式。源目录以 /. 结尾时,复制的是目录内容。
常用全局选项
| 选项 | 默认值 | 说明 |
|---|---|---|
--json | false | 输出 JSON,适合脚本和自动化。 |
--host-key-policy | 空 | 主机密钥策略:fail、accept-new、strict、insecure-skip。 |
-h, --help | false | 查看当前命令帮助。 |