通过 SSH 从外部连接 Ubuntu 服务器

通过 SSH 从外部连接 Ubuntu 服务器

我最近安装了 Ubuntu Server 12.04 (Precise Pangolin),打算主要将其用作文件服务器。我对 Linux 完全陌生,所以这是一个相当大的学习曲线。昨天我能够配置油灰在我的 Windows 7 机器上使用 SSH 密钥对,这样我就可以从我的桌面管理 Ubuntu Server。只要两台机器都在同一个网络上,就可以正常工作。

就我的笔记本电脑而言(MacBook Air) 可能并不总是在同一个网络上。当我的笔记本电脑位于不同的网络上时,是否可以通过 SSH 从笔记本电脑连接到 Ubuntu 服务器?

我已经安装了 avahi 守护程序,以便服务器的主机名在 LAN 上广播,并配置了路由器,以便它始终为服务器分配相同的 IP 地址。除此之外,我在服务器上安装的唯一东西是OpenSSH我已禁用密码验证,以便您只能使用密钥对进行连接。

我以为我可以从我的笔记本电脑上的终端做这样的事情:

ssh my.external.ip.address [email protected]

当我尝试该命令时出现错误:

ssh:连接到主机 my.external.ip.address 端口 22:操作超时

我也尝试过

ssh my.external.ip.address [email protected]

我收到与之前相同的错误消息。这应该让您知道我想做什么,但这可能吗?如果可能,我该怎么做?

假设我可以通过笔记本电脑上的 ssh 设置外部连接,那么我的 ISP 可能会更改我的外部 IP 地址,从而中断外部连接。我希望能够稳定地连接,也就是说,如果我的 ISP 更改了外部 IP 地址,我仍然能够远程连接到服务器,而不必知道新的外部 IP 地址是什么。

答案1

首先,正确的命令是: ssh [email protected]

并且应配置路由器以将 SSH 端口 22 转发到服务器的本地 IP 地址。

进一步调试:

1)检查您的服务器和路由器上的端口 22(SSH)是否打开(端口转发)。

2)检查你的服务器上是否正在运行 SSH 服务器

3)连接时使用pingssh -v并查看/var/log/auth.log以调试任何进一步的连接问题。

1)在路由器上:按照路由器的具体说明进行操作

在您的服务器上:(sudo ufw status除非您使用其他防火墙配置实用程序)或sudo iptables -L(通用方法,但输出复杂)

要打开端口 22:sudo ufw allow 22

可可https://help.ubuntu.com/12.04/serverguide/firewall.html

2)检查是否已安装:dpkg -l openssh-server

检查它是否正在运行:service ssh statusps aux | grep sshd

3)在连接的客户端上:

在服务器上:

  • sudo less /var/log/auth.log

如果有必要,您也可以检查路由器日志。

这是一个在线端口扫描器:https://www.grc.com/x/ne.dll?bh0bkyd2

我认为你可以使用类似的工具nmap或者其他的,但我还不太熟悉它们。

处理不断变化的外部 IP 地址:

1)获取 dynDNS 或类似账户:http://dyn.com/dns/

动态 DNS 提供商列表:

2)另一个解决方案是设置一个 crontab 作业,它会定期通过电子邮件向您发送您的外部 IP 地址或将其放入 dropbox 等在线存储服务中。

这是我的一个朋友使用的脚本:

    #!/bin/bash
    # Bash script to get the external IP address
    MYWANIP=$(curl http://mire.ipadsl.net | sed -nr -e 's|^.*<span class="ip">([0-9.]+)</span>.*$|\1| p')
    echo "My IP address is: $MYWANIP"

    IPold=$(cat /home/USER/Dropbox/test.txt)
    echo "Previous IP Address: $IPold"

    if [[ $IPold != $MYWANIP ]] ;
    then
      echo "New IP"
      rm /home/USER/Dropbox/test.txt
      echo $MYWANIP >> /home/USER/Dropbox/test.txt;
      echo $MYWANIP;
    else
      echo "Same IP";
    fi

    # example crontab entry:
    ## m h  dom mon dow   command
    ## */10 * * * * /home/USER/Dropbox/test_ip.sh

路由器端口转发:

1)首先,通过运行以下命令找出路由器的本地 IP 地址:

ip route | grep default

通常类似于 192.168.xx

替代方法和其他操作系统解决方案:

2)使用任何本地连接到路由器的计算机,访问之前找到的 IP,即通过http://192.168.1.1例如。这将调出路由器配置界面。

3) 接下来的步骤取决于您的路由器。以下是在装有 OpenWRT 的路由器上执行的操作:

https://newspaint.wordpress.com/2012/08/26/how-to-add-a-port-forward-using-the-web-interface-on-openwrt-10-03-1/

答案2

默认情况下,Ubuntu(桌面版)未安装 SSH。

您可以在终端中通过以下命令进行安装:

sudo apt-get install openssh-server

它应该立即安装并启动服务。

相关内容