V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LonnyWong
V2EX  ›  程序员

支持在跳板机上自动选择(登录)服务器的 ssh 客户端

  •  
  •   LonnyWong · 335 天前 · 1591 次点击
    这是一个创建于 335 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很多公司都会搞个跳板机,在本地登录跳板机要一些步骤,在跳板机上登录服务器又要一些步骤。
    这些步骤能不能合二为一,简化登录流程呢?

    https://github.com/trzsz/trzsz-ssh 新版本 v0.1.16 就可以做到。这里简单介绍一下用法。

    假设跳板机 J 后面有 A B C 三台服务器,一般是在本地配置跳板机 J ,登录 J 之后再手工选择 A B C 之一登录。
    trzsz-ssh ( tssh ) 就可以在本地直接配置 A B C 三台服务器,省去在跳板机 J 上的人工操作。
    以下是在 ~/.ssh/config 中配置 A B C 三台服务器的例子:

    Host A
        HostName 172.21.0.2  # 跳板机 J 的 IP
        Port 2222            # 跳板机 J 的端口
        User username        # 跳板机 J 的用户名
        # 以下是记住跳板机 J 的登录密码( 通过 tssh --enc-secret 得到 ),推荐使用公钥登录。
        #!! encPassword f48160ae63d6eaa5a53983e5f9afe6a0c99f3e791d48714ba3405bed88ca4495
        #!! ExpectCount 1    # 有些跳板机只要交互一次就能登录目标服务器,这里配置交互次数
        #!! ExpectPattern1 Opt>  # 跳板机的输入提示符
        #!! ExpectSendText1 172.22.0.11\r   # 有些跳板机可以直接输入目标服务器的 IP 登录,\r 代表回车
    
    Host B
        # 前面的配置和 A 一样,可以直接复制下来( ~/.ssh/config 支持通配符,可以简化配置 )
        #!! ExpectSendText1 172.22.0.12\r   # 这里配置目标服务器 B 的 IP
    
    Host C
        # 前面的配置和 A 一样,可以直接复制下来
        #!! ExpectSendText1 172.22.0.13\r   # 这里配置目标服务器 C 的 IP
    

    当配置 ExpectCount 大于 0 后,通过 tssh --debug 登录,可以看到跳板机的输出,然后设计自己的登录剧本。

    配置完成后,可以 tssh A 直接登录,也可以不带参数运行 tssh ,然后会有界面选择 A B C 进行登录,支持搜索,支持多选并批量登录。更多用法可以看开源的 README: https://github.com/trzsz/trzsz-ssh

    tssh 登录演示

    2 条回复    2023-12-24 15:59:15 +08:00
    idblife
        1
    idblife  
       335 天前
    windterm 里面配置一个跳转就搞定了
    LonnyWong
        2
    LonnyWong  
    OP
       334 天前
    @idblife #1 是 ProxyJump 吗?有些跳板机不支持吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2896 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:58 · PVG 15:58 · LAX 23:58 · JFK 02:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.