我正在尝试在路由器后面的机器中生成SSH服务器。
首先,我尝试将SSH绑定到我的公共IP地址:
ssh -R 10002:localhost:22 <ip_address>
然后我提示密码请求,但我的用户名密码似乎不起作用。
显然我知道我的用户名密码,所以在我看来它正在尝试在同一网络下的另一台计算机上进行身份验证。
有任何建议如何解决这个问题?
当您无法访问路由器时,它还可以帮助我了解如何在路由器后面创建SSH服务器。
iptables中的端口都是开放的。
UPDATE
如建议的那样 托马斯奥斯特 回答我尝试了以下内容。
在路由器后面的机器中,我执行了以下命令:
$ 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中允许端口转发 remove_public_ip_address服务器
我试图在sshd_config文件中允许portforwarding添加此命令:
LocalForward 10002 <my_remote_public_server_ip>:22
但它给了我这个错误信息:
Bad configuration option: LocalForward
在“ssh -R ....”之后你是否打开了窗户?
执行该命令后,它连接到远程公共机器,是的,我打开了窗口。
你可以在公共服务器上使用ssh -p 10002 localhost吗? 隧道是否已创建?
是的,如果我在公共服务器中执行该命令,它会在询问我的凭据后连接。
请在路由器后面的机器上尝试“ssh localhost”,检查sshd是否正在运行。
这也有效。
更新3
我终于能够使它工作了(再次感谢 托马斯奥斯特)
我们将使用三台机器:
目的地机器:我们要连接到的。
中间机器:充当连接中介的服务器(在我的情况下是Linode)
家用电脑:我们将在哪里访问目的地电脑。
这些是我遵循的步骤
步骤1:
[destination computer]$ vi /etc/ssh/sshd_config
添加GatewayPorts选项:
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