我想生成机器中的路由器后面的SSH服务器。如何绕过防火墙和NAT与反向SSH隧道
首先,我试图将SSH绑定到我的公网IP地址:
ssh -R 10002:localhost:22 <ip_address>
然后我提示一个密码请求,但是我的用户名密码似乎并没有工作。
显然我知道我的用户名密码,所以在我看来,它试图在同一网络下的另一台计算机上进行身份验证。
任何建议如何解决这个问题?
这也将帮助我如何创建一个路由器后面的SSH服务器的任何替代方案,当你没有访问到路由器。
iptables中的端口都开放。
UPDATE
至于建议的Thomas Oster答案我已经试过以下。
在路由器后面,我执行以下命令机:
$ ssh -R10002:localhost:22 <remote_public_ip_address> -l <my_remote_server_username>
<remote_ip_address>
是一个服务器的公网IP和我有充分的控制SSH服务器的remote_ip_address。
<my_remote_server_username>
作为远程服务器的用户名。
在那之后,我试图从远程服务器连接到服务器的路由器这样的背后:
$ ssh -p 10002 <remote_public_ip_address>
但是这个命令会显示以下输出:
ssh: connect to host <remote_public_ip_address> port 10002: Connection refused
因此,我使用以下命令在iptables防火墙中打开了10002端口:
sudo iptables -A INPUT -p tcp --dport 10002 -j ACCEPT
在那之后,我再次执行命令,但它显示了同样的错误消息。
在我的机器后面的路由器我有所有端口在iptables中打开。
更新2
你必须允许在/ etc/SSH /的 remove_public_ip_address服务器的sshd_config portforwarding
我试图让在sshd_config portforwarding添加此命令的文件:
LocalForward 10002 <my_remote_public_server_ip>:22
但它给了我这个e RROR消息:
Bad configuration option: LocalForward
“SSH -R ....” 后要离开的窗口中打开?
执行该命令后,它连接到远程公共机器,是的,我离开了窗口打开。
在创建隧道 后,您可以在公共服务器上使用ssh -p 10002 localhost吗?
是的,如果我在公共服务器中执行该命令,它在询问我的凭据后连接。
请在路由器后面的机器上尝试“ssh localhost”,检查sshd是否正在运行并正常运行。
这也适用。
更新3
我已经终于能够使它(再次感谢Thomas Oster)工作
我们将三本用机的工作:
目标计算机:那我们想要连接到。
中东机:一台服务器充当连接(在我的情况下的Linode)
家用电脑中介:我们在哪里将访问到目标计算机。
这些都是我跟着
步骤1中的步骤:
[destination computer]$ vi /etc/ssh/sshd_config
添加GatewayPorts选项:
GatewayPorts是
重新启动SSH。
第2步:
[destination computer]$ ssh -R 4040:localhost:22 [email protected]
这将通过端口4040
你的公共机器与目标计算机连接后会连接到中间的机器,并提示终端,则必须将此选项卡打开。
第3步:
ssh [email protected] -p4040
或者从中间机器连接:
从家里连接
[home computer]$ ssh [email protected]
[middle computer]$ ssh [email protected] -p4040
您必须允许remove_public_ip_address服务器的/ etc/ssh/sshd_config中的端口转发 –
在“ssh -R ....”之后,您是否打开窗口?只要连接处于打开状态,隧道就会处于活动状态。它显示了任何错误消息,如“无法绑定到10002”?创建隧道后,您可以在公共服务器上使用ssh -p 10002 localhost吗? –
请在路由器后面的机器上尝试“ssh localhost”,检查sshd是否正在运行并正常运行。 –