ssh跳板机使用案例

现有3台机器A,B和C,A机器和B机器网络互通,A机器和C机器网络不通,B机器和C机器网络互通,那么在C机器上如何通过ssh连接到A机器里?
要在C机器上通过B机器间接SSH连接到A机器,可以使用SSH的代理跳转(ProxyJump)功能。以下是3种实现方法的具体步骤和命令示例:

前提条件

  1. 网络连接

    • C机器可以连接到B机器。
    • B机器可以连接到A机器。
  2. SSH权限

    • C机器上有权限SSH连接到B机器。
    • B机器上有权限SSH连接到A机器。
  3. SSH配置

    • 确保防火墙或安全组设置允许相关的SSH连接。

一、使用 ProxyJump 进行跳板连接

ProxyJump 是SSH的一项功能,允许通过中间主机(跳板机)来连接目标主机。假设:

  • B机器的IP或主机名为 B_host,用户名为 userB
  • A机器的IP或主机名为 A_host,用户名为 userA

命令行方式

在C机器的终端中执行以下命令:

ssh -J userB@B_host userA@A_host

解释:

  • -J userB@B_host 指定跳板机B的信息。
  • userA@A_host 是目标A机器的SSH登录信息。

配置SSH配置文件(~/.ssh/config)

为了简化连接,可以在C机器的SSH配置文件中添加如下配置:

Host A_via_B
    HostName A_host
    User userA
    ProxyJump userB@B_host

然后,只需在终端中执行:

ssh A_via_B

二、使用 ProxyCommand(适用于旧版本SSH)

如果你的SSH版本不支持 ProxyJump,可以使用 ProxyCommand

ssh -o ProxyCommand="ssh userB@B_host nc A_host 22" userA@A_host

或者在SSH配置文件中添加:

Host A_via_B
    HostName A_host
    User userA
    ProxyCommand ssh userB@B_host nc %h %p

然后同样通过 ssh A_via_B 进行连接。

三、使用SSH隧道(可选)

如果需要频繁访问A机器,可以在B机器上设置SSH隧道,将A机器的SSH端口转发到B机器的某个端口,然后C机器通过B机器访问该端口。例如:

  1. 在C机器上建立隧道

    ssh -L 2222:A_host:22 userB@B_host
    

    这会将C机器的本地端口2222转发到A机器的22端口,通过B机器。

  2. 通过隧道连接A机器

    在另一个终端中执行:

    ssh userA@localhost -p 2222
    

注意事项

  • 确保B机器的SSH配置允许转发(修改B机器/etc/ssh/sshd_config配置文件,添加GatewayPorts yes)。
  • 如果使用密钥认证,确保C机器的SSH密钥已添加到B机器的 ~/.ssh/authorized_keys,以及B机器的SSH密钥已添加到A机器的 ~/.ssh/authorized_keys
  • 根据安全需求,可以进一步限制跳板机的访问权限。

通过上述方法,C机器可以成功通过B机器间接连接到A机器,实现SSH反连。

posted @ 2025-03-07 18:16  闹闹爸爸  阅读(256)  评论(0)    收藏  举报