无法与我的服务器建立 SSH 连接,但只能从公共 IP(端口 22:连接被拒绝)

无法与我的服务器建立 SSH 连接,但只能从公共 IP(端口 22:连接被拒绝)

这是我的问题:

我想通过 ssh 从 macbookpro (10.10.4) 登录到我的 ubuntu 服务器,但它无法从任何公共 IP 地址运行

当我与服务器使用同一个 wifi 并尝试连接到私有/本地 IP 时,一切正常。它询问我的密码,然后我就可以登录:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to XXX.XXX.X.XX [XXX.XXX.X.XX] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<2048<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA XX:XX:XX:XXX:XX:XX
debug1: Host 'XXX.XXX.X.XX' is known and matches the RSA host key.
debug1: Found key in /Users/XXXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXXX/.ssh/id_dsa
debug1: Next authentication method: password
[email protected]'s password: 

但是当我尝试从公共 IP 连接时,我收到以下消息:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to XX.XX.XXX.XX [XX.XX.XXX.XX] port 22.
debug1: connect to address XX.XX.XX.XX port 22: Connection refused
ssh: connect to host XX.XX.XX.XX port 22: Connection refused

以下是我迄今为止所做的事情:

  1. 检查哪个端口正在监听 ssh -> 端口 22

    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      5886/sshd  
    
  2. 检查防火墙是否在端口 22 上处于活动状态 -> 未处于活动状态

    sudo ufw verbose
    Status: inactive
    
  3. 尝试使用 apt-get 卸载/重新安装 openssh-server -> 没有任何变化

  4. 尖叫并猛击墙壁 -> 什么也没改变

我该如何修复此问题?

从 Mac 连接是否存在特殊问题?

我对 Linux 还很陌生,所以请温柔一点 :)

答案1

首先:欢迎!

从日志和错误消息来看,您的路由器上未启用端口转发,以允许通过 SSH 连接到机器。

您可以通过查找路由器型号并找出如何将端口 22 转发到服务器的 IP 地址来完成此操作。您可以使用 确定服务器的 IP 地址ifconfig。在路由器设置中,您也可以为服务器设置一个静态 IP 地址,这样它就不会移动。

另一个 IP 地址问题是,如果您的 ISP 不使用动态 IP,那么您的 IP 地址可能会“随机且不经通知”更改。这取决于您的 ISP,我的 ISP“使用”动态 IP,但在我住在这里的 8 个月里,它没有改变过。

您可以设置一个脚本,以便在您需要访问时让服务器每天通过电子邮件向您发送您的外部 IP 地址。

如果您继续遇到连接被拒绝错误,则您的 ISP 可能出于“安全”考虑在其他端口列表中阻止了端口 22。

对此有一个巨大的警告,我说的巨大警告指的是巨大的警告。此过程将使您的服务器容易受到任何打开该端口的攻击。您需要尽最大努力加强服务器以抵御此类攻击。这可以通过多种方式实现,建议遵循所有方式。

如何保护 Ubuntu 16.04 LTS 服务器是一份关于保护您的服务器的深入指南。

请确保尽可能多地实施这些措施。我强烈建议使用密钥访问、锁定特定用户并禁用 root 访问等。如果您并非绝对需要从外部 IP 进行访问,那么我不会打扰。

相关内容