如何从我的家庭网络外部访问我的SSH Linux服务器

时间:2013-09-22 01:00:38

标签: linux ubuntu ssh

所以我几天来一直在网上搜索,试图解决这个问题并且无法理解。

我知道这将是一个简单的。

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

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

我现在想要了解的两件事情。

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

    (我已经完成了sudo主机名并更改了etc / hostname文件而没有结果)

  3. 谢谢你们。

1 个答案:

答案 0 :(得分:10)

您的家庭网络外部发生超时是因为您指定的IP将在外部网络上的其他位置路由。

正如其他人所说,您需要在路由器(外部接口)上配置到SSH服务器的端口转发。您可以使用标准端口(22)或任何替代端口(1024以上)。对于Web服务器,您需要设置从外部接口上的端口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,但它很慢。