如题。LZ 是 SecureCRT+FX 正版用户。
一直在规划把工作流迁移到 Linux 下,但是 SecureCRT+FX 在 Linux 下一直找不到平替。
我的需求总结一下的话就是,我需要管理相当数量的 ssh 连接 (100-200),做好分类,并且让我建立的连接有日志。还有少量的 rdp 连接 (10 个左右),这个自己写点脚本足够了。
我目前可以想到的解决方案是,把我 SecureCRT 上记录的连接手动转写到 .ssh/config 文件里面,然后写个 shell 脚本来管理这个文件。
我的工作流还分布在 Emacs 和 FireFox 里面。
各位来分享一下 Linux 下管理大量 ssh 连接的经验?

本论坛不是有大佬撸了个 xterminal 吗,还行的。

Linux 还需要这个???不是直接 ssh command 就可以了吗?

linux 下同样有 SecureCRT+FX

你这个是程序员思维,不是运维人员的思维

SecureCRT+SecureFX 有 Ubuntu 20.04/22.04 版

macOS 呢?

terminal?

github.com/trzsz/trzsz-ssh支持搜索和选择,可以在命名上含有分组名,然后搜索它们。

管理配置的话,自己写了个 python 小脚本。 解析也很简单,碰到一个 "host " 开头就算一个配置,然后从这行的注释 ("#" 分割) 去读定制的东西。 Host github.com # hide HostName github.com User gitHost myhost # group:dev HostName 192.168.1.1这种 格式。前两天刚写的,就不拿出来献丑了,要留日志的话,自己写个 alias 就行了。gnu 有个 script , scriptreplay 命令,可以用来记录终端和回放。

求 arm64 版本的 ssh ,试过 xshell ,很多网络设备连接不上,tabby 兼容好一点但是交换机配置中的中文无法正常显示。。。感谢感谢

xshell 强推,无敌。不接受反驳,反驳的是不会用。

#12 Sorry ,楼主问的是 Linux 。当我没回哈

electerm ?

Ansible

#12 你没怎么用过其他终端,或者不会用其他终端吧,哈哈

windterm

#8 这个看起来符合我管理上的需求,但是我更偏向于自己造轮子 :b #9 和我现在的思路差不多。我想要实现的是那种 tui 方向键选定然后按回车键打开链接的那种,有没有啥思路?另外,图炸了

你也可以 fork 出去自己造

#18 bash 写 tui 貌似很麻烦,python 应该也要装第三方库,那还不如用楼上提到的 trzsz-ssh 得了如果硬要写代码,golang 看到有个库 pkg.go.dev/github.com/kevinburke/ssh_config#Host 把 Host 类的 EOLComment 解析一下。 Golang 写 TUI 我喜欢用 github.com/charmbracelet/bubbletea 不过我自己没需求,就没什么动力去写了。 imgur 估计有什么问题,屏蔽 ip 了?我这边看到正常的。下次直接用链接得了。 pb.koi.moe/KJ

想到是不是可以自定义一下 fzf 做搜索,虽然这算不上 tui ,不过也很像了。我也是前两天开始用 fzf 的,效果示例是这样子: pb.koi.moe/kk 这个是我在 zsh 里搜索命令历史记录。

#19 #20 我现在的思路是,用 python 自带的 curses 库写一个 tui ,每行根据 .ssh/config 显示一个配置,上下键选定按下 enter 直接调 openssh 建立连接。基本逻辑不是很复杂,最复杂的应该也只是搜索了吧,所以 curses 虽然简陋点但也够用。在我的规划里,这个工具应该是一个简单的脚本,最多几百行,而不是一个 project ,所以 tssh 太重了。

SecureCRT+FX 不是本来就有 Linux 版吗

#21 233 用 fzf 真就一条命令 pb.koi.moe/klssh $(sshhosts | grep -vE "^\+|^$" | fzf -m | awk '{print $1}') git.sr.ht/~lindsay/dotfiles/tree/master/item/bin/sshhosts上班摸鱼写的,没继续润色了。

续 #24忘了去掉 -m 参数了,那个是不用的。然后 fzf 可以不清空整个终端,不过我没找到参数。

楼上那些说 SecureCRT+FX 有 Linux 版的,我一个正版用户难道不知道吗

#12 先看看楼主的连接数,100-200 ,这个量级,xshell 这个贵物是用不起的。

我看我司运维是有一个跳板机,跳板机上配置好所有公钥,然后直接 ssh 别名,类似 的方法

续 24 更简陋版: ssh $(grep -i "host " .ssh/config | awk '{$1=$1;print}' | fzf | awk '{print $2}')~ 发太多回复被频率限制了 ~

#28 公司里也有 jumpserver 。但这 100-200 ssh 连接是我自己的机器,只有我自己用,所以我不想耗自己的资源再起跳板机 :p自己的嘛,能省就省

为啥不能.ssh/config 文件呢?

#31 bro 注意看,100-200 个 ssh 连接的配置信息,这意味着 .ssh/config 里有 100-200 个 Hostname 配置,我可记不住每个连接都有啥样的 Hostname 。这个量级 vim/emacs 浏览一遍都得几分钟。

#32 ssh_config 有个 include 关键字,可以 glob 模糊匹配我一般是有行 include ~/.ssh/config.d/*.conf

WindTerm

我在前公司管理 CI 的时候,也有四五十个 SSH 机器需要,可能比你少一些但也没有本质区别。.ssh/config 支持 Include 语法,把不同区域的配置放在不同文件里就行了。至于登录日志,我不觉得客户段的登录日志是可信的,还是要在服务器上进行统计,或者由第三方服务统计。

#33 #31 我刚转了 10 条连接的信息到 ssh_config 里面,确实发现有个针对 Host 字段的模糊匹配。100-200 这个量级的连接重新针对 Host 字段的模糊匹配设计命名规则的话,被模糊匹配过滤以后大概有 20 个左右的结果。似乎,我不需要脚本了。连接信息的检索和修改 grep 和 sed 就够用。下面要解决的就是日志的问题了。

#35 我才意识到 .ssh/config 有模糊匹配 hhhh关于日志,bro ,你说得对。但是这个日志主要是给我自己看的,所以,我信就行 :p

#34 windterm 怎么通过跳板机连接服务器呢

我没有用过,但是我看有这个功能的。

本论坛大佬的 www.xterminal.cn/

windterm可惜不支持 wayland

#20 如果你只是需要对列表进行选择的话,PECO 就够了 github.com/peco/peco

#42我看到了一条 peco 和 fzf 比较的 issue: github.com/peco/peco/issues/422 我开始用 fzf 是 Emacs 有个插件依赖了(具体忘了哪个了)。现在 zsh 的文件补全和历史搜索也用它。既然有了就直接用 fzf 吧。

scrt-sfx-9.4.1-3102.ubuntu22-64.x86_64.deb