先登录堡垒机,再由它把你送到目标机器。验证码、菜单,以及连过去之后的会话,Term 都能处理。
需要 Term v26.1.6 或更高版本。
通过网关连接从 v26.1.5 起就能用了。v26.1.6 改的是登录本身:进去要花的尝试次数更少,失败时也会说清楚到底是哪里出的问题。
撰写于
连普通服务器时,你直接连到那台机器。连 JumpServer 时,你连的是网关:它核对你的身份,列出你有权限访问的机器,然后代替你去连接目标机器。目标机器的密码你从来不需要持有 —— 那在网关手里。
所以它和 Term 的跳板机设置不是一回事。跳板机是把你穿透过去,由你自己去目标机器上登录;堡垒机则是在网关处终结连接,再另起一条连过去。因此请把 JumpServer 的地址填在普通的主机栏里,跳板机留空。
你真正连上的那一层叫 koko —— JumpServer 负责字符协议(SSH、Telnet、SFTP、Kubernetes、数据库)的组件。核对登录、画出菜单、再向目标机器发起连接的都是它,所以下文关于菜单和验证码的说明,讲的是 koko 的行为,而不是网页控制台的。
2222 而不是 22,具体问管理员。堡垒机把你放在一个菜单里,而不是 shell。提示符长这样:Opt>。输入机器的编号,或者名字、地址的一部分,然后回车:
p —— 列出你能访问的机器g —— 按节点分组列出/名称 —— 搜索,例如 /192.168? —— 帮助 · q —— 退出登录选中之后你就在那台机器的 shell 上了,一切照常 —— 按键栏、方向键、Ctrl-C、改变窗口大小都正常。用 exit 退出这个 shell,就回到菜单,可以直接挑下一台,不必重新登录。
JumpServer 也支持直接连到某一台机器:把完整目标写进用户名栏 —— 你@账号@机器,其中 你 是 JumpServer 用户,账号 是目标机器上的登录名,机器 是它在 JumpServer 里的名称。
两种分隔符都可以。最省事的填法是:把完整目标填进用户名栏,主机栏只填 JumpServer 的地址 —— 这样不需要任何推断。如果你更习惯把整串 你@账号@机器@JumpServer地址 粘贴到主机栏,Term 会按最后一个 @ 拆分,正好把目标留在用户名里。至于是否开放直连,取决于 JumpServer 那边的设置。
在 JumpServer 主机上,命令建议和任务完成提示是关闭的。这两项功能靠 Term 在连接瞬间往你的 shell 里装一小段辅助脚本,而堡垒机的菜单并不是 shell —— 发过去只会被原样敲进菜单里,并且很可能被记录下来。所以 Term 会识别出 JumpServer 并跳过这一步。
SFTP 标签页暂不支持经由堡垒机使用,请在普通主机上使用它。
另外值得记住:堡垒机通常会录制会话 —— 这正是它存在的意义。经由它输入的内容都可能被保留并复查。
Term 会先问网关接受哪些登录方式,再决定先用哪一种。这一点在堡垒机上比在别处都要紧:koko 在密码通过之前根本不提供验证码那一步,所以一上来就走验证码的客户端,会在还没递出任何凭据之前,就白白用掉网关允许的一次尝试。只允许一两次的网关,会在登录进行到一半时直接挂断——而密码其实一直是对的。
真的挂断时,Term 现在会直说:服务器在给出结果之前就中断了登录。在 v26.1.6 之前,这里给出的是一条在源码之外毫无意义的内部错误。请稍等一会儿再试,不要立刻重来——这类限制是按时间计的,连着重试只会让它一直处在触发状态。
如果网关要的是验证码,现在的失败信息会指出是哪一环:这台主机没填密钥、密钥读不出来,或者网关拒绝了这个验证码。每种情况的含义见两步验证指南。