2289 字
11 分钟

从WindTerm到Kitty:30分钟搞定SSH免密登录与多服务器管理

说实话,我刚从WindTerm转到Kitty的时候,真的有点崩溃。以前在WindTerm里点几下就能连上的服务器,现在每台都要背IP、记端口、敲密码,每天光是登录就浪费了半小时。

更绝的是,我有一次在公司电脑配好了所有连接,回家想用Mac继续工作,结果发现所有配置都在WindTerm里,导出来还得折腾半天。那时候我就想,能不能有一套方案,既能让SSH像WindTerm一样”一键直达”,还能在多台Mac之间无缝同步?

后来我花了一下午研究,还真搞出来了。今天就把这套方案分享给你,30分钟就能搞定,从此告别背IP和敲密码的痛苦。


为什么要抛弃WindTerm,拥抱Kitty?#

你可能会想,WindTerm用得好好的,为啥要换?我跟你讲,Kitty是真的香。

数据说话:Kitty基于GPU加速,滚动大型日志时,性能比WindTerm快3-5倍。WindTerm卡顿的地方,Kitty丝滑得不像话。而且Kitty是macOS原生的终端,配合iTerm2的配色和快捷键,体验直接拉满。

但我最看重的是:Kitty是纯SSH客户端,不搞那些花里胡哨的连接管理。这意味着什么?你的所有配置都是标准的SSH config,换了台电脑,拷个配置文件就能用,完全不依赖某个特定软件。

说白了,Kitty是”专业选手”,WindTerm是”多功能瑞士军刀”。如果你像我一样,每天要连十几个服务器,Kitty的高效会让你回不去。


第一步:生成你的”万能钥匙”#

咱们先搞定密钥。这是SSH免密登录的基础,你只有一把钥匙,能开所有的门。

在终端里敲这行命令

Terminal window
ssh-keygen -t ed25519 -C "mac_kitty_office"

为什么选ed25519?

老实说,我之前一直用RSA,4096位的密钥生成一次要好几秒。后来换成ed25519,瞬间就搞定了。ed25519的密钥更小(RSA是几百KB,ed25519只有几十B),但安全性反而更高,连接速度也快。

全程回车就行

它提示你输入密码(Passphrase)的时候,直接回车跳过。我知道你可能会担心”不设密码不安全吗?“但说实话,你的私钥留在本地,Mac本身就有密码保护,再设一层SSH密码反而麻烦。

生成完之后

你的密钥对在 ~/.ssh/ 目录下:

  • id_ed25519 是私钥(绝对别泄露给别人)
  • id_ed25519.pub 是公钥(这个可以随便发)

第二步:把钥匙发给服务器#

现在你有了一把”万能钥匙”,得把公钥发给每一台服务器,让服务器认你这把钥匙。

方法A:自动分发(推荐)

Terminal window
ssh-copy-id -p 22 root@你的服务器IP

这命令我超爱用,一行就搞定。它会自动把你的公钥加到服务器的 ~/.ssh/authorized_keys 文件里。第一次还得输一次密码,之后就免密了。

方法B:手动创建(备选方案)

如果你已经登录了服务器,或者ssh-copy-id用不了,手动来也行:

Terminal window
mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo "你的公钥内容" >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

把这行命令复制到服务器终端里,把”你的公钥内容”替换成你本地的 id_ed25519.pub 文件内容,回车就完事。

我踩过一个坑:记得把公钥的换行符删掉。直接复制的时候会多一行空格,会导致SSH认证失败。这个问题我折腾了半小时才发现,你说尴尬不尴尬。


第三步:给服务器起”绰号”,一键直达#

现在免密登录搞定了,但每次还要 ssh root@1.2.3.4 输IP,还是太麻烦。咱们来个更高级的:给每个服务器起个”绰号”,以后直接 ssh 绰号 就能连上。

SSH有个超级强大的功能:config 配置文件。你可以把它理解为”通讯录”,每个Host就是一条联系人记录。

打开配置文件

Terminal window
nano ~/.ssh/config

这是我的配置模板(你可以直接抄):

Terminal window
# 基础设置(对所有Host生效)
Host *
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60 # 防止长时间不动被断开
# 服务器A:生产环境
Host prod-web
HostName 192.168.1.100
User root
Port 2222
# 服务器B:测试环境
Host test-db
HostName 192.168.1.50
User admin
Port 22
# 服务器C:公司服务器
Host office-server
HostName your.domain.com
User deploy
Port 22

配置完之后

现在你想连服务器A,直接敲 ssh prod-web 就能上。想连测试数据库,ssh test-db 搞定。是不是比背IP强太多了?

进阶技巧

如果你的服务器有分组,比如生产环境和测试环境分开,可以用 Host 通配符:

Terminal window
# 所有生产环境服务器
Host prod-*
IdentityFile ~/.ssh/id_ed25519_prod
User root
Host prod-web
HostName 192.168.1.100
Host prod-db
HostName 192.168.1.101
# 所有测试环境服务器
Host test-*
IdentityFile ~/.ssh/id_ed25519_test
User admin

这样不同的组可以用不同的密钥,安全性更高。


第四步:多Mac设备同步,不用重复配置#

我有个朋友,公司和家里各有一台Mac,每次换电脑都要重新配SSH,烦得不行。我跟他说,直接拷配置文件就完事。

方案一:老老实实重新生成(最安全)

在新Mac上重新生成密钥,然后把公钥发给所有服务器。这样每台Mac都有独立的身份,丢了其中一台也不怕。缺点是:服务器多的话,要发很多次。

方案二:直接拷贝老配置(最快捷)

如果你像我一样,懒得重复劳动,直接把老Mac的SSH配置搬过去:

  1. 拷贝文件:用AirDrop把 ~/.ssh/ 整个文件夹发到新Mac
  2. 修复权限:拷贝完之后,权限会乱,这是生死攸关的一步!
Terminal window
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/config

注意:如果权限不对,SSH会直接报错,说”permissions are too open”。我第一次拷贝就踩了这个坑,还以为是密钥坏了,排查了半天才发现是权限问题。

方案三:iCloud实时同步(最酷炫)

如果你经常在两台Mac间切换,建议把 config 文件放到iCloud里,然后用软链接指向它:

Terminal window
ln -s ~/Library/Mobile\ Documents/com~apple~CloudDocs/ssh_config ~/.ssh/config

这样你在任何一台Mac上修改服务器配置,另一台会自动同步。我试过,体验真的丝滑,再也不用手动同步了。


第五步:在Kitty里一键启动#

SSH config配好了,现在在Kitty里调用超简单。

推荐用法

Terminal window
kitten ssh prod-web

注意不是普通的 ssh,是 kitten ssh。这个命令会自动同步Kitty的终端描述符,确保远程环境的vim、tmux配置都能完美工作。我之前用普通 ssh 连服务器,vim配色总是乱,后来换成 kitten ssh 直接解决。

设置快捷别名

~/.zshrc 里加一行:

Terminal window
alias s='kitten ssh'

以后你只需要敲 s prod-web,瞬间登录。是不是很爽?

更酷的玩法

Kitty支持多窗口快捷启动,你可以直接在配置文件里预设窗口布局。比如一键打开3个窗口:一个连生产环境,一个连测试环境,一个连数据库。这个有点进阶,等你熟练了可以再研究。


踩过的坑,你别再踩了#

这一路走来,我踩过的坑不少,总结几个最常见的:

坑1:权限问题

~/.ssh/ 目录必须是700,私钥和 authorized_keys 必须是600。这个是铁律,不按这个来,SSH直接报错。我之前把目录设成了755,结果连了三天才发现问题。

坑2:从WindTerm迁移.ppk密钥

如果你有WindTerm里存的Putty格式的 .ppk 密钥,不能直接用。得先用 puttygen 工具转成OpenSSH格式,或者干脆重新生成一对新的。我一开始不知道,拿着 .ppk 文件去配,折腾了一下午。

坑3:多身份管理冲突

如果你为不同项目用了不同的密钥对,记得在 config 里给每个Host指定正确的 IdentityFile。不然SSH会默认用 ~/.ssh/id_ed25519,导致认证失败。


总结一下#

咱们回顾一下这套方案的核心价值:

  1. 免密登录:生成一把密钥,发给所有服务器,再也不用敲密码
  2. 别名管理:给服务器起”绰号”,ssh 绰号 一键直达
  3. 多设备同步:拷贝配置或iCloud同步,新Mac立即可用
  4. Kitty增强kitten ssh 命令,完美支持终端配置

现在就可以开始

  1. 在你的Mac上生成 ed25519 密钥
  2. 把公钥发给你要管理的所有服务器
  3. 编辑 ~/.ssh/config,给每个服务器起个别名
  4. 测试 ssh 别名,一键登录
  5. (可选)配置iCloud同步,多设备无缝切换

说句实话,这套方案配好之后,我再也不想用WindTerm了。每天至少节省30分钟登录时间,多出来的时间写代码不香吗?

如果你在配置过程中遇到问题,欢迎在评论区留言。看到我会回复,咱们一起讨论。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
从WindTerm到Kitty:30分钟搞定SSH免密登录与多服务器管理
https://blog.moewah.com/posts/windterm-to-kitty-ssh-passwordless-login-multi-server-management/
作者
GoWah
发布于
2025-04-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
GoWah
Hello, I'm GoWah.
分类
标签
站点统计
文章
160
分类
9
标签
350
总字数
301,106
运行时长
0
最后活动
0 天前

目录