ssh跳板机使用案例
现有3台机器A,B和C,A机器和B机器网络互通,A机器和C机器网络不通,B机器和C机器网络互通,那么在C机器上如何通过ssh连接到A机器里?
要在C机器上通过B机器间接SSH连接到A机器,可以使用SSH的代理跳转(ProxyJump)功能。以下是3种实现方法的具体步骤和命令示例:
前提条件
-
网络连接:
- C机器可以连接到B机器。
- B机器可以连接到A机器。
-
SSH权限:
- C机器上有权限SSH连接到B机器。
- B机器上有权限SSH连接到A机器。
-
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机器访问该端口。例如:
-
在C机器上建立隧道:
ssh -L 2222:A_host:22 userB@B_host这会将C机器的本地端口2222转发到A机器的22端口,通过B机器。
-
通过隧道连接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反连。
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/18758197

浙公网安备 33010602011771号