我正在尝试在路由器后面的机器中生成 SSH 服务器。
首先,我尝试将 SSH 绑定到我的公共 IP 地址:
ssh -R 10002:localhost:22 <ip_address>
然后提示我输入密码请求,但是我的用户名密码似乎不起作用。
显然我知道我的用户名密码,所以在我看来,它正在尝试在同一网络下的另一台计算机上进行身份验证。
任何建议如何解决这个问题?
当您无权访问路由器时,它还可以帮助我在路由器后面创建 SSH 服务器的任何替代方法。
iptables 中的端口都是开放的。
更新
正如托马斯奥斯特的回答所建议的那样,我尝试了以下方法。
在路由器后面的机器中,我执行了以下命令:
$ 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
您必须在 remove_public_ip_address 服务器的 /etc/ssh/sshd_config 中允许端口转发
我试图允许在 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