带有 2 个 IP 的 SSH 命令的含义

带有 2 个 IP 的 SSH 命令的含义

我经常会看到类似这样的 ssh 命令:

ssh user1@user2@<one-ip-address>@<second-ip-address

一开始我以为这是通过另一台服务器进行 ssh。但是有几个问题和例子,比如如何使用一个命令通过 B SSH 连接到机器 A?通过 ssh 为服务器提供更好的解决方案。

那么,我的问题是,在什么样的场景下,我们必须使用上述类型的 ssh 命令。ssh 命令的目的地是什么?

答案1

SSH 中有一项功能叫代理跳转

ssh -J [email protected]:port1,[email protected]:port2 [email protected]

这听起来就像你所指的。

有关更多信息,请参见ProxyJump 第 6 节或这个RedHat 上的 ProxyJump 页面。特别要注意的是,还有其他格式,例如,当每个主机上的 user:passwd 都相同时(不要这样做!)。您还可以将信息放入配置文件中,以避免每次都输入它(尽管history在那里很有用)。

最后,还有其他方法可以实现相同的功能,在 SSH 中:-o proxycommand=,以及-q -W(后者在此处解释解释Shell)。

答案2

正如许多评论所暗示的那样,该语法ssh user1@user2@<one-ip-address>@<second-ip-address不会导致有用的 ssh 行为,并且与跳转主机功能无关。

请尝试以下操作:

  • 在任何系统上,使用当前用户连接到本地主机:

    $ ssh localuser@localhost
    

    正如预期的那样,这将ssh在本地主机上打开一个会话

  • 现在尝试使用建议的语法进行相同的操作:

    $ ssh localuser@localhost@localuser@localhost
    localuser@localhost@localuser@localhost's password: 
    Permission denied, please try again.
    ...
    

    系统会要求您输入密码,但系统不会让您进入,因为 localuser@localhost@localuser系统中不存在该用户。

    还请检查输出/var/log/auth.log

    Aug 17 08:45:46 somehost sshd[73042]: Invalid user localuser@localhost@localuser from 127.0.0.1 port 44292
    Aug 17 08:45:48 somehost sshd[73042]: pam_unix(sshd:auth): check pass; user unknown
    Aug 17 08:45:48 somehost sshd[73042]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=127.0.0.1 
    Aug 17 08:45:50 somehost sshd[73042]: Failed password for invalid user localuser@localhost@localuser from 127.0.0.1 port 44292 ssh2
    

localuser@localhost@localuser除非您在想要连接的系统上创建用户,否则此语法将不起作用。

相关内容