我怎样才能在局域网外部使用带有外部 IP 地址的新 openssh 服务器?
目的是使局域网之外的外部计算机管理员能够通过互联网管理 openssh 服务器(root 权限、软件和数据的安装)。
技术设置:
Local Area Network = Router + openssh-server + openssh-client
openssh-server Ubuntu 14.04.1 服务器全盘加密内部 IP 111.111.111.111,互联网服务提供商提供的外部 IP 地址 222.222.222.222,路由器为这台计算机设置的两个空闲端口 22(TCP、UDP),用户 MaximGorki
openssh-client Ubuntu 14.04.1桌面全盘加密内部IP 111.111.111.110,互联网服务提供商提供的外部IP地址222.222.222.222
我能够使用路由器为 openssh-server 111.111.111.111 设置的 IP 地址从局域网 (LAN) 内的 openssh-client 登录到 openssh-server。
我想要从 openssh-server 使用命令行连接 openssh-server:
ssh [email protected]
ssh [email protected]
内部IP地址与密码配合使用。
局域网内的 openssh-client 计算机的外部 IP 地址不起作用:
ssh:连接到主机 222.222.222.222 端口 22:连接超时
我也设置了公钥功能。但是这不起作用。我不知道为什么。因此,我很乐意仅通过密码验证来访问 openssh 服务器。
我想测试 openssh-server 是否可以从外部 IP 地址使用。
我必须在哪台计算机上设置或更改什么?
我对 Linux 的了解非常有限,如果您看到答案,请提供完整的命令行语法作为示例。
根据一个答案的推荐,我在原始 iptables 中添加了 4 条规则。Iptables 现在如下所示:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source
218 16703 ACCEPT all -- any any anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- any any 222.222.222.222
0 0 ACCEPT tcp -- any any anywhere tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source
0 0 ACCEPT all -- any any anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- any any anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- any any anywhere state RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 10 packets, 2082 bytes)
pkts bytes target prot opt in out source
答案1
我的错误是没有将 ssh_config、sshd_config 和路由器中的端口设置为相同的数字。之前,我更改了端口号。我混淆了服务器和客户端的配置文件。现在所有配置文件和路由器中的所有端口都有相同的编号。现在我可以使用外部 IP 地址从客户端访问服务器。
答案2
为此,您需要在路由器上转发您尝试连接的端口。您可以在 Google 上查找有关此操作的说明,因为不同制造商和型号的说明有很大差异。
答案3
检查 iptables 是否有防火墙限制。尝试在 Iptables 中添加以下几行,并检查是否能够通过 ssh 访问机器
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -s 222.222.222.222 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
如果上述方法不起作用,请检查路由器设置,端口是否正确转发
答案4
您是否确保您的路由器可以(并且已启用)NAT环回/发夹?
如果不是,您无法通过外部 IP 连接到 LAN 上的设备。尝试将手机绑定到客户端,而不是使用 LAN 互联网连接进行测试。或者使用代理、VPN 或尝试从另一个网络建立连接。