SecureCRT+FX 在 Linux 下的平替是什么?( Linux 下管理 ssh 连接的经验?) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
gridsah
V2EX    程序员

SecureCRT+FX 在 Linux 下的平替是什么?( Linux 下管理 ssh 连接的经验?)

  •  
  •   gridsah 2023-10-12 22:39:06 +08:00 3412 次点击
    这是一个创建于 729 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。LZ 是 SecureCRT+FX 正版用户。

    一直在规划把工作流迁移到 Linux 下,但是 SecureCRT+FX 在 Linux 下一直找不到平替。

    我的需求总结一下的话就是,我需要管理相当数量的 ssh 连接 (100-200),做好分类,并且让我建立的连接有日志。还有少量的 rdp 连接 (10 个左右),这个自己写点脚本足够了。

    我目前可以想到的解决方案是,把我 SecureCRT 上记录的连接手动转写到 .ssh/config 文件里面,然后写个 shell 脚本来管理这个文件。

    我的工作流还分布在 Emacs 和 FireFox 里面。

    各位来分享一下 Linux 下管理大量 ssh 连接的经验?

    46 条回复    2023-10-22 19:42:25 +08:00
    hefish
        1
    hefish  
       2023-10-12 22:41:02 +08:00
    本论坛不是有大佬撸了个 xterminal 吗,还行的。
    pengtdyd
        2
    pengtdyd  
       2023-10-12 22:48:13 +08:00
    Linux 还需要这个???不是直接 ssh command 就可以了吗?
    kalebroccoli
        3
    kalebroccoli  
       2023-10-12 23:07:30 +08:00
    linux 下同样有 SecureCRT+FX
    wheat0r
        4
    wheat0r  
       2023-10-12 23:13:48 +08:00
    @pengtdyd 你这个是程序员思维,不是运维人员的思维
    salmon5
        5
    salmon5  
       2023-10-12 23:21:19 +08:00
    SecureCRT+SecureFX 有 Ubuntu 20.04/22.04 版
    TabGre
        6
    TabGre  
       2023-10-12 23:37:14 +08:00 via iPhone
    macOS 呢?
    emperinter
        7
    emperinter  
       2023-10-13 00:20:35 +08:00
    terminal?
    LonnyWong
        8
    LonnyWong  
       2023-10-13 00:23:09 +08:00   1
    https://github.com/trzsz/trzsz-ssh
    支持搜索和选择,可以在命名上含有分组名,然后搜索它们。
    LindsayZhou
        9
    LindsayZhou  
       2023-10-13 07:41:43 +08:00   1
    管理配置的话,自己写了个 python 小脚本。
    解析也很简单,碰到一个 "host " 开头就算一个配置,然后从这行的注释 ("#" 分割) 去读定制的东西。
    Host github.com # hide
    HostName github.com
    User git

    Host myhost # group:dev
    HostName 192.168.1.1

    这种 格式。

    前两天刚写的,就不拿出来献丑了,


    要留日志的话,自己写个 alias 就行了。gnu 有个 script , scriptreplay 命令,可以用来记录终端和回放。
    LindsayZhou
        10
    LindsayZhou  
       2023-10-13 07:48:01 +08:00
    justrest
        11
    justrest  
       2023-10-13 08:34:23 +08:00
    求 arm64 版本的 ssh ,试过 xshell ,很多网络设备连接不上,tabby 兼容好一点但是交换机配置中的中文无法正常显示。。。感谢感谢
    shervy
        12
    shervy  
       2023-10-13 08:42:59 +08:00
    xshell 强推,无敌。不接受反驳,反驳的是不会用。
    shervy
        13
    shervy  
       2023-10-13 08:43:28 +08:00
    @shervy #12 Sorry ,楼主问的是 Linux 。当我没回哈
    LonnyWong
        14
    LonnyWong  
       2023-10-13 08:44:38 +08:00
    @justrest electerm ?
    cndns
        15
    cndns  
       2023-10-13 08:47:01 +08:00
    Ansible
    LonnyWong
        16
    LonnyWong  
       2023-10-13 08:50:52 +08:00
    @shervy #12 你没怎么用过其他终端,或者不会用其他终端吧,哈哈
    miaoxiao
        17
    miaoxiao  
       2023-10-13 08:57:17 +08:00
    windterm
    gridsah
        18
    gridsah  
    OP
       2023-10-13 09:11:31 +08:00
    @LonnyWong #8 这个看起来符合我管理上的需求,但是我更偏向于自己造轮子 :b

    @LindsayZhou #9 和我现在的思路差不多。我想要实现的是那种 tui 方向键选定然后按回车键打开链接的那种,有没有啥思路?另外,图炸了
    LonnyWong
        19
    LonnyWong  
       2023-10-13 09:15:26 +08:00
    @gridsah 你也可以 fork 出去自己造
    LindsayZhou
        20
    LindsayZhou  
       2023-10-13 09:22:39 +08:00   1
    @gridsah #18
    bash 写 tui 貌似很麻烦,python 应该也要装第三方库,那还不如用楼上提到的 trzsz-ssh 得了

    如果硬要写代码,golang 看到有个库 https://pkg.go.dev/github.com/kevinburke/ssh_config#Host
    把 Host 类的 EOLComment 解析一下。
    Golang 写 TUI 我喜欢用 https://github.com/charmbracelet/bubbletea

    不过我自己没需求,就没什么动力去写了。

    imgur 估计有什么问题,屏蔽 ip 了?我这边看到正常的。下次直接用链接得了。https://pb.koi.moe/KJ
    LindsayZhou
        21
    LindsayZhou  
       2023-10-13 09:35:50 +08:00   1
    想到是不是可以自定义一下 fzf 做搜索,虽然这算不上 tui ,不过也很像了。

    我也是前两天开始用 fzf 的,效果示例是这样子: https://pb.koi.moe/kk 这个是我在 zsh 里搜索命令历史记录。
    gridsah
        22
    gridsah  
    OP
       2023-10-13 09:46:47 +08:00
    @LonnyWong #19
    @LindsayZhou #20

    我现在的思路是,用 python 自带的 curses 库写一个 tui ,每行根据 .ssh/config 显示一个配置,上下键选定按下 enter 直接调 openssh 建立连接。基本逻辑不是很复杂,最复杂的应该也只是搜索了吧,所以 curses 虽然简陋点但也够用。

    在我的规划里,这个工具应该是一个简单的脚本,最多几百行,而不是一个 project ,所以 tssh 太重了。
    minami
        23
    minami  
       2023-10-13 09:52:06 +08:00
    SecureCRT+FX 不是本来就有 Linux 版吗
    LindsayZhou
        24
    LindsayZhou  
       2023-10-13 09:54:16 +08:00
    @LindsayZhou #21
    233 用 fzf 真就一条命令 https://pb.koi.moe/kl

    ssh $(sshhosts | grep -vE "^\+|^$" | fzf -m | awk '{print $1}')

    https://git.sr.ht/~lindsay/dotfiles/tree/master/item/bin/sshhosts

    上班摸鱼写的,没继续润色了。
    LindsayZhou
        25
    LindsayZhou  
       2023-10-13 09:57:23 +08:00
    @LindsayZhou 续 #24
    忘了去掉 -m 参数了,那个是不用的。然后 fzf 可以不清空整个终端,不过我没找到参数。
    gridsah
        26
    gridsah  
    OP
       2023-10-13 10:01:15 +08:00
    楼上那些说 SecureCRT+FX 有 Linux 版的,我一个正版用户难道不知道吗
    nothingistrue
        27
    nothingistrue  
       2023-10-1 10:04:31 +08:00
    @shervy #12 先看看楼主的连接数,100-200 ,这个量级,xshell 这个贵物是用不起的。
    4kingRAS
        28
    4kingRAS  
       2023-10-13 10:10:10 +08:00
    我看我司运维是有一个跳板机,跳板机上配置好所有公钥,然后直接 ssh 别名,类似 @LindsayZhou 的方法
    LindsayZhou
        29
    LindsayZhou  
       2023-10-13 10:14:08 +08:00
    @LindsayZhou 续 24
    更简陋版:
    ssh $(grep -i "host " .ssh/config | awk '{$1=$1;print}' | fzf | awk '{print $2}')

    ~ 发太多回复被频率限制了 ~
    gridsah
        30
    gridsah  
    OP
       2023-10-13 10:14:46 +08:00
    @4kingRAS #28 公司里也有 jumpserver 。

    但这 100-200 ssh 连接是我自己的机器,只有我自己用,所以我不想耗自己的资源再起跳板机 :p
    自己的嘛,能省就省
    dangyuluo
        31
    dangyuluo  
       2023-10-13 10:19:17 +08:00   1
    为啥不能.ssh/config 文件呢?
    gridsah
        32
    gridsah  
    OP
       2023-10-13 10:24:22 +08:00
    @dangyuluo #31 bro 注意看,100-200 个 ssh 连接的配置信息,这意味着 .ssh/config 里有 100-200 个 Hostname 配置,我可记不住每个连接都有啥样的 Hostname 。这个量级 vim/emacs 浏览一遍都得几分钟。
    LindsayZhou
        33
    LindsayZhou  
       2023-10-13 10:26:27 +08:00   1
    @gridsah #32 ssh_config 有个 include 关键字,可以 glob 模糊匹配

    我一般是有行 include ~/.ssh/config.d/*.conf
    micookie
        34
    micookie  
       2023-10-13 10:29:09 +08:00
    WindTerm
    dangyuluo
        35
    dangyuluo  
       2023-10-13 10:34:31 +08:00   1
    @gridsah 我在前公司管理 CI 的时候,也有四五十个 SSH 机器需要,可能比你少一些但也没有本质区别。.ssh/config 支持 Include 语法,把不同区域的配置放在不同文件里就行了。至于登录日志,我不觉得客户段的登录日志是可信的,还是要在服务器上进行统计,或者由第三方服务统计。
    gridsah
        36
    gridsah  
    OP
       2023-10-13 10:37:24 +08:00
    @LindsayZhou #33
    @dangyuluo #31

    我刚转了 10 条连接的信息到 ssh_config 里面,确实发现有个针对 Host 字段的模糊匹配。100-200 这个量级的连接重新针对 Host 字段的模糊匹配设计命名规则的话,被模糊匹配过滤以后大概有 20 个左右的结果。

    似乎,我不需要脚本了。连接信息的检索和修改 grep 和 sed 就够用。下面要解决的就是日志的问题了。
    gridsah
        37
    gridsah  
    OP
       2023-10-13 10:43:31 +08:00
    @dangyuluo #35
    我才意识到 .ssh/config 有模糊匹配 hhhh
    关于日志,bro ,你说得对。但是这个日志主要是给我自己看的,所以,我信就行 :p
    Lunrry
        38
    Lunrry  
       2023-10-13 10:45:08 +08:00
    @micookie #34 windterm 怎么通过跳板机连接服务器呢
    micookie
        39
    micookie  
       2023-10-13 10:51:32 +08:00

    我没有用过,但是我看有这个功能的。
    @Lunrry
    xiaoz
        40
    xiaoz  
       2023-10-13 10:54:26 +08:00
    本论坛大佬的 https://www.xterminal.cn/
    idblife
        41
    idblife  
       2023-10-13 11:40:23 +08:00
    windterm
    可惜不支持 wayland
    Izual_Yang
        42
    Izual_Yang  
       2023-10-13 11:48:59 +08:00
    @LindsayZhou #20
    如果你只是需要对列表进行选择的话,PECO 就够了 https://github.com/peco/peco
    LindsayZhou
        43
    LindsayZhou  
       2023-10-13 12:50:24 +08:00
    @Izual_Yang #42
    我看到了一条 peco 和 fzf 比较的 issue: https://github.com/peco/peco/issues/422

    我开始用 fzf 是 Emacs 有个插件依赖了(具体忘了哪个了)。现在 zsh 的文件补全和历史搜索也用它。既然有了就直接用 fzf 吧。
    gearfox
        44
    gearfox  
       2023-10-13 14:11:43 +08:00
    scrt-sfx-9.4.1-3102.ubuntu22-64.x86_64.deb
    mxq0923
        45
    mxq0923  
       2023-10-17 10:43:20 +08:00
    通过 assh 生成 ssh_config ,通过 fzf 模糊搜索登录
    justrest
        46
    justrest  
       2023-10-22 19:42:25 +08:00 via Android
    @LonnyWong linux 的 electerm 好像没有支持 arm64 的,求下载地址
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5490 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 08:32 PVG 16:32 LAX 01:32 JFK 04:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86