2013-09-22 90 views
22

因此,我一直在网上搜索互联网几天,试图弄清楚这一点,并找不到它。如何从我的家庭网络外部访问我的SSH Linux服务器

我知道它会很容易。

所以我最近拿了一个旧桌面,并加载了Ubuntu的服务器12.04。我的这个项目的目标是创建一个区域来容纳几个git仓库,也许是一个简单的网页。

我已经安装了SSH和Apache2软件包,并试图配置它们。现在我可以使用ssh [email protected]从我的笔记本电脑登录,但只能在同一网络上登录。一旦我离开房子,我会遇到超时错误。

所以我现在想要得到2件事情。

  1. 如何配置SSH以允许我从外部网络访问服务器。
  2. 获取服务器上我的主机名,以便登录将被格雷格@主机名代替[email protected]

    (我已经做了sudo的主机名和更改等/主机文件,并没有结果)

谢谢你们。

+0

您需要通过路由器打开端口22和80(尽管我建议您将用于SSH的端口更改为非标准端口)。如果您为其设置DNS条目,从外部访问将更容易。这两件事都是SO的主题。尝试在这里询问[su] – 2013-09-22 01:05:47

+0

offtopic,但确保您的服务器计算机具有可访问的端口(可能被路由器/防火墙/等阻止),然后使用您的服务器的外部IP地址 –

+0

对不起,我把它转发给超级用户。感谢您的反馈 – Greg

回答

7

由于您指定的IP将在外部网络的其他位置路由,您的家庭网络外部出现超时。

正如其他人所指出的,您需要在路由器(外部接口)上配置端口转发到SSH服务器。您可以使用标准端口(22)或任何其他端口(大于1024的东西)。对于Web服务器,如果要包含SSL/TLS连接,则需要将外部接口上端口80的端口转发设置为您的服务器,也可能需要端口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运行,但速度很慢。

+0

嗨Ben,我陷入了这样一种情况,路由器后面有一台计算机,我没有任何配置路由器的权利,但我有一个DDNS,我有一台服务器在我的控制下。那么我怎样才能从外部访问我的电脑在本地网络?非常感谢! – Gizak

+0

如果不访问路由器,则无法配置到该网络上的任何系统的端口转发。出于某种原因,这些东西通常被称为网关。 – Ben

相关问题