因此,当连接到同一网络时,我能够通过 SSH 连接到服务器,但我需要启用远程连接。
当我输入时ssh -v user@serverIP
,我得到输出:
OpenSSH_5.6p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for
debug1: Connecting to 192.168.0.19 [192.168.0.19] port 22.
当我输入时ssh user@serverIP
我得到:
ssh: connect to host 192.168.0.19 port 22: Host is down
我使用以下命令启用了 port22 转发:
sudo ufw allow 22
我还登录到我的路由器防火墙设置以启用端口 22。
我主要改变的/etc/ssh/sshd_config
是:
Port 22
ListenAddress InternetIP
ListenAddress ServerIP
任何见解都将不胜感激。
答案1
也许我漏掉了什么,但在你的问题中我看不到“远程”IP 地址。我只看到 192.168.xx,它只在你的局域网内可用。如果你想从局域网外连接,你需要使用外部(公共)地址,这是从外部看到的真实地址。如果它是一个动态地址,你需要确保它是最新的,或者使用动态 DNS 服务,如 DynDNS。
此外,您需要打开路由器上的端口,并确保它指向端口 22 的服务器。
添加信息
如果您希望轻松地从外部访问系统上的一个或多个服务器,您可能需要研究动态 DNS。有些免费服务需要定期访问或其他要求。我使用的服务 (dyndns.org) 以前是免费服务,但现在每年收费 25 美元。我使用它来远程访问 Web 服务器以及我的 calibre 电子书服务器。它允许您从大列表中选择一个域名,并添加前缀以使其个性化。例如,您可以选择 homelinux.net,并添加任意数量的名称,例如“atavel.homelinux.net”;您定期在家庭系统上运行标准更新程序,它将读取您的实际 IP 地址,并在发生变化时更新 dynDNS。其实这并不复杂。
答案2
感谢 muru 提供此部分
首先,ListenAddress 语法不是用竖线分隔的列表。您需要两行。例如:
Port 22
ListenAddress InternetIP
ListenAddress ServerIP
下一个要考虑的点是,如果您的服务器位于 NAT 或路由器后面,则需要使用端口转发。这需要在您的路由器或防火墙设备上进行配置,以便从 Internet(公共)IP 转到服务器的内部(私有)IP 地址。
注意:这与服务器防火墙中的“允许”规则不同。