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

Gre*_*reg 25 linux ssh ubuntu

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

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

所以我最近拿了一个旧桌面并加载了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文件而没有结果)

多谢你们.

Ben*_*Ben 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
Run Code Online (Sandbox Code Playgroud)

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

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

配置完成后,与端口转发一起使用时,您可以使用"ssh serverint"连接到服务器,当您在家时,可以使用"ssh serverext"连接到其他地方.

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