我有机器A
,B
可以Relay
通过 ssh 访问另一台机器,但反之则不行。我可以通过这台机器访问另一台B
机器A
而不Relay
打开端口吗22
?除非该端口是唯一可访问的端口。
例如,一个可能的解决方案是ssh
从B
进入Relay
并打开文件进行读写stdin
。stdout
从 连接到A
允许relay
读写这些文件以便与 进行通信B
。
有没有办法使用命令行工具来实现这一点?
答案1
那么,显然中继上已经有一个打开的端口,否则 ssh 就不可能实现。
我看到的唯一方法是让 B 通过 ssh 连接到中继,同时打开一个反向隧道,然后 A 就可以使用。您正在寻找“-R”选项。
答案2
以下是一种方法:
- ssh A 中继并转发本地端口(例如
ssh -L 6022:127.0.0.1:6022
)此命令通过 SSH 将 A 上的本地端口 6022 转发到中继上的端口 6022。 - ssh B 中继并将远程端口转发到本地(
ssh -R 6022:127.0.0.1:22
)此命令将中继上的远程端口 6022 转发到 B 上的本地端口 22 - 现在在 A 上,使用 ssh 连接到本地主机端口 6022 并且应该能够登录到 B。