27

因此,我已经在互联网上搜索了几天试图弄清楚这一点,但无法弄清楚。

我知道这将是一件容易的事。

所以我最近拿了一个旧桌面并在上面加载了 ubuntu server 12.04。我对这个项目的目标是创建一个区域来托管一些 git 存储库,也许还有一个简单的网页。

我已经安装了 SSH 和 Apache2 软件包并尝试配置它们。现在我可以使用 ssh greg@0.0.0.0.0 从我的笔记本电脑登录,但只有在我在同一个网络上时才能登录。一旦我离开家,我就会收到超时错误。

所以我现在想谈两件事。

  1. 如何配置 SSH 以允许我从网络外部访问服务器。
  2. 在服务器上获取我的主机名,以便登录名将是 greg@hostname 而不是 greg@0.0.0

    (我已经完成了 sudo hostname 并更改了 etc/hostname 文件,但没有结果)

多谢你们。

4

1 回答 1

12

发生家庭网络外部超时是因为您指定的 IP 将被路由到外部网络上的其他地方。

正如其他人所指出的,您需要在路由器(外部接口)上配置端口转发到 SSH 服务器。您可以使用标准端口 (22) 或任何替代端口(高于 1024)。对于网络服务器,您需要设置从外部接口上的端口 80 到服务器的端口转发,如果您想包含 SSL/TLS 连接,可能还需要设置端口 443。

我还建议使用 SSH 配置文件 (~/.ssh/config),以便在进行内部或外部连接时更容易。添加如下内容:

Host serverext
Hostname 1.2.3.4
User greg
Port 22

Host serverint
Hostname 192.168.1.10
User greg
Port 22

将 serverext 配置的主机名更改为 Internet 连接的 IP 地址。如果您为外部 SSH 连接使用非标准端口,则更改 serverext 的端口字段以匹配该端口。

将 serverint 配置的主机名更改为网络上该服务器的内部 IP 地址。

配置完成后,结合端口转发,您将能够在您在家时使用“ssh serverint”连接到您的服务器,当您在其他地方时使用“ssh serverext”连接到它。

可以通过 SSH 配置文件包含高级配置选项,例如端口隧道和 websocket 连接。过去我做过类似的事情,并通过 SOCKS 代理服务器重定向 SSH 连接。我什至让它通过 Tor 运行,但它非常慢。

于 2013-09-22T01:27:42.813 回答