通过端口转发实现 ssh 多路复用

通过端口转发实现 ssh 多路复用

我正在尝试创建一个设置,人们可以通过“ssh”连接到本地主机上的特定端口,然后获取转发到远程服务器并进入 shell,无需输入凭据(不幸的是,密钥不是一个选项)。

到目前为止,我已经设置了 ssh 多路复用,ControlMaster因此我可以从本地 shell 启动远程 ssh shell,而无需任何提示。

当新客户端连接到本地主机上的特定端口时,有没有办法使用该套接字?

我尝试了 和 的各种组合-D-R-S都没有成功。在 Linux 或 Mac 上是否可以进行这样的设置?

编辑:

我不介意在任何时候输入本地主机凭据,但我试图避免在初始控制连接之后的所有连接中输入远程凭据。


localhost        ---->    localhost:2222             ---->   remote:22
  $ ssh -p 2222             forward to remote                  $ _ :)
                            using an existing 
                            control socket

答案1

如果您想要一个基本的 shell,您可以使用它netcat来创建一个在远程服务器上监听某个端口的 shell,并使用本地 ssh 上的端口转发来创建隧道:

在遥控器上:

while true ; do netcat -l -p 15000 -e /bin/bash ; done

在本地:

ssh -L 5000:remoteip:15000 user@server
netcat localhost 5000

你将无法使用某些命令(vim 行为是有趣的),但它适用于大多数命令。每次关闭连接时,循环都会产生一个新的连接。

答案2

您可以随时localhost:2222 localhost:22使用 iptables 重新路由(转发),例如。

iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22

别名端口/端口转发到另一个本地端口或这个谷歌搜索.此外ControlMaster auto,不应该要求任何额外的密码(无论是本地还是远程)。

然而对我来说这似乎是不必要的并且让我怀疑您是否遇到了 XY 问题。

相关内容