【发布时间】:2013-10-16 15:44:31
【问题描述】:
我正在尝试在路由器后面的机器中生成 SSH 服务器。
首先我尝试将 SSH 绑定到我的公共 IP 地址:
ssh -R 10002:localhost:22 <ip_address>
然后提示我输入密码,但我的用户名密码似乎不起作用。
显然我知道我的用户名密码,所以在我看来它正在尝试在同一网络下的另一台计算机上进行身份验证。
有什么建议可以解决这个问题吗?
当您无权访问路由器时,它还可以帮助我了解如何在路由器后面创建 SSH 服务器。
iptables中的端口都是开放的。
更新
正如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/sshd_config 的 /etc/ssh/sshd_config 中允许端口转发 remove_public_ip_address 服务器
我已尝试在 sshd_config 文件中添加此命令来允许端口转发:
LocalForward 10002 <my_remote_public_server_ip>:22
但它给了我这个错误信息:
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 选项:
网关端口是
重启 ssh。
第 2 步:
[destination computer]$ ssh -R 4040:localhost:22 middle-machine-user@middle-machine-public-ip
这将通过端口 4040 将您的公共计算机与您的目标计算机链接
它将连接到中间机器并提示终端,您必须保持此选项卡处于打开状态。
第 3 步:
在家连接:
ssh destination-user@destination-ip -p4040
或者从中间机连接:
[home computer]$ ssh middle-machine-user@middle-machine-ip
[middle computer]$ ssh destination-user@localhost -p4040
【问题讨论】:
-
必须在 remove_public_ip_address 服务器的 /etc/ssh/sshd_config 中允许端口转发
-
在“ssh -R....”之后,您是否让窗口保持打开状态?隧道仅在连接打开时才处于活动状态。它是否显示任何错误消息,例如“无法绑定到 10002”?建立隧道后可以在公共服务器上使用 ssh -p 10002 localhost 吗?
-
请在路由器后面的机器上尝试“ssh localhost”以检查sshd是否正在运行和工作。
-
如果你不想要HTTP或HTTPS,你也可以试试burrow.io,免费账户可以让你打开1个HTTP反向隧道,你要做的就是在上面运行一个curl命令正在侦听端口 4040 的机器。您在网站上设置隧道。这很酷。
-
我认为在第 3 步中您的意思是
ssh destination-user@middle-ip -p4040
标签: ssh firewall nat ssh-tunnel