ssh ControlPath 中的 mux- 前缀与 Bastion 服务器

ssh ControlPath 中的 mux- 前缀与 Bastion 服务器

我正在查看不同的示例来配置 ssh 配置以支持堡垒连接到我的云的内部服务器。

我遇到了几个在 ControlPath 配置上具有前缀“mux-”的(工作)示例 -

例如:

#ssh_config
#use with ssh -F ssh_config user@<TARGET_SERVER_IP>
Host *
    ServerAliveInterval    60
    TCPKeepAlive           yes
    ProxyCommand           ssh -q -A gmasgras@<JUMP_SERVER_IP> nc %h %p
    ControlMaster          auto
    ControlPath            ~/.ssh/mux-%r@%h:%p
    ControlPersist         8h
    User                   ubuntu
    StrictHostKeyChecking  no

来源

我找不到有关"mux-"前缀和%r@%h:%p后缀(%r=远程用户、%h=主机、%p=端口)的任何解释。该组合显然不是 ssh 文件夹中实际的 ssh 公钥。

在其他示例 ControlPath 变体中,人们还使用:

ControlPath ~/.ssh/ssh-mux-%r@%h:%p

或者

ControlPath /tmp/ssh-%r@%h:%p

或者

ControlPath ~/.ssh/cm-%r@%h:%p

甚至

ControlPath ~/.ssh/ansible-%r@%h:%p

您能解释一下前缀约定吗? ( "mux-", "ssh-mux-", "ansible-")

答案1

答案是 ControlPath~/.ssh/XXX-%r@%h:%p根据您设置的配置在您的本地计算机上创建一个具有模式的文件。

该字符串是任意的,这就是为什么它没有记录在任何地方。

ControlPath 的定义来自本文:

ControlPath 条目指定在何处存储多路复用连接的“控制套接字”。在这种情况下,%r 指远程登录名,%h 指目标主机名,%p 指目标端口。在控制套接字名称中包含此信息有助于 SSH 分离控制套接字以连接到不同的主机。

事实上,如果您导航到 ~/.ssh/ 文件夹,您会发现发生堡垒连接时自动创建的文件。

(仅供参考:堡垒也称为跳转主机

答案2

虽然名称是任意的,正如 @orberkov 提到的,但人们将它们命名为 mux,因为 mux 是来自电子术语的已知简写,意思是多路复用器。其他名称(例如 ansible 或其他名称)更多地根据人们对这些套接字的使用而命名。

至于它们的生命周期,它们在套接字处于活动状态时存在,然后被删除。

基本上,您只想按照约定来命名它们,该约定定义了可见且可识别的名称,同时保证每个不同的套接字都有唯一的名称。

相关内容