SSH到家用计算机


21

我在家中有多台计算机,希望从学校使用SSH和VNC进行访问。为了做到这一点,我给他们提供了静态IP:

  • 192.168.1.50:Windows
  • 192.168.1.51:Ubuntu
  • 192.168.1.52:Raspberry Pi / Raspbian

我知道SSH使用端口22,因此我可以将此端口转发到路由器上的192.168.1.51:22,但是这样就无法通过SSH到Raspberry Pi。有什么办法可以设置为可以访问两台计算机?


10
您可以使用其他ssh端口。我不知道在Windows上有多困难,但是在linux上将其更改为非标准端口真的很容易 。这样,您就可以转发端口22赢得机器(那里没有任何更改),并将另一个端口(非标准)转发到RaspberryPi。
bistoco

2
@Melebius,虽然年代久远,但仍然是一本不错的书,对我来说,关键部分是“我试图做出的基本论点:不要通过默默无闻地进行安全性。”这是关于一种需求并轻松解决它。 。也就是说,也许他不必更改ubuntu或pi端口,只需将不同的路由器端口转发到每个22个计算机端口即可。
bistoco

1
@bistoco同意。但是,OP将向外部世界公开SSH访问,在这种情况下必须始终考虑安全性。在计算机上设置不同的端口也不能解决OP的问题,因为他需要在其路由器上启用不同的端口(=端口转发)。
Melebius

6
@Melebius Off主题,但是我从来没有使用22,只是因为自动化的bot不会以24/7的频率敲我的服务器。它不会阻止真正的攻击者(或写得好的脚本),但是确实会减少我的日志条目的数量。
卡兹·沃尔夫

4
您可以只连接其中一个(可公共访问的一个),然后使用本地地址从该地址连接到另一个地址。
tkausl

Answers:


32

如果您具有IPv6,则甚至不需要端口转发!只需获取您的永久IPv6地址(基于您的MAC地址,这样就可以保证保持不变,除非您的ISP不知道IPv6的工作方式),然后使用它来进行隧道传输。由于您的IPv6地址是面向公众的,因此可以无需访问本地NAT即可访问您,而无需在任何地方启用端口转发。它将“正常工作”。

但是请注意,IPv6仍未真正在全球范围内受支持,并且您的家庭Internet连接和远程Internet连接都需要具有完全正常工作的IPv6才能做到这一点。

但是,如果您像大多数人一样只拥有IPv4,那么仍然有办法!一些路由器允许您将特定的源端口转发到特定的目标端口,例如:

在此处输入图片说明

在这个例子中,端口22是直接传递给我的机器sheepdog,而端口292被转发到端口22coyote

最后,如果您的路由器不具备此功能,则可以更改端口,因为SSH不仅限于在port上运行22。您可以将其设置为任何您想要的(未被使用)。

/etc/ssh/sshd_config(您需要root进行编辑,因此sudo nano /etc/ssh/sshd_config)中,文件顶部有一行:

# What ports, IPs and protocols we listen for
Port 22

将此更改为您想要的任何内容:

# What ports, IPs and protocols we listen for
Port 2992

使用重启SSH服务器sudo service ssh restart,并转发路由器上的端口。


但是,对于这种用例,我会考虑SSH隧道是否正确。也许您应该在家庭网络上设置专用的VPN服务器?只要您具有VPN所需的正确安全凭证,这将允许您从任何地方访问整个家庭网络。此外,VPN的开销略少。您通常只需要为一台计算机转发一个端口。


2
如果您的ISP不支持IPv6,则可以使用IPv6隧道代理获取IPv6地址。
安德烈·博里

1
所谓“此功能”,是指将端口转发到其他端口?
刘思远

@刘思远 我知道这很奇怪,但是我看到一些无法处理它的路由器。我的ISP提供的旧路由器甚至无法尝试。
卡兹·沃尔夫

尚未完全了解IPv6部分。我们是否应该假设所有提供IPv6地址的ISP为您在网络上的每台设备提供一个(一致的)不同地址?
jjmontes

1
@jjmontes如果您的ISP胜任,您将获得完整的/ 64(或更少的数字,但仍足以为每台计算机分配一个)
Kaz Wolfe

19

解决此问题的一种简单方法是将路由器的不同端口映射到计算机的端口22。例如,您可以在路由器中进行以下设置(假设您的路由器具有IP 1.2.3.4

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

然后,当您使用ssh时,通过键入指定要使用的端口

$ ssh <username>@<router ip> -p <your port>

现在,您应该可以连接到所有计算机了。


11

如果您知道一台计算机始终处于开机状态,则也可以将其用作ssh代理。

假设您为外部IP地址(即myhome.dyndns.com或其他名称)设置了一个域名,您要做的是在一台计算机上连接(假设树莓派始终处于运行状态,然后将端口从路由器转发到它),您的ssh连接将是:

学校->(路由器,在这里透明)->覆盆子-> Ubuntu或Windows

现在,在学校的〜/ .ssh / config中,添加以下行:

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %r@myhome.dyndns.com

然后连接:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh myuser@ubuntu (login without password)

从现在开始,如果您键入ssh ubuntu,则计算机将首先连接到树莓派,然后启动与ubuntu计算机的ssh会话。

无论您选择转发哪个端口,我都建议您禁用/etc/sshd.conf中的密码,以仅允许通过ssh密钥登录。这样,如果您在树莓派和ubuntu上使用参数“ ForwardAgent”设置密钥,则只需解锁密钥,然后无需密码即可连接。这样,即使漫游器试图在您的ssh上登录,由于您禁止密码登录,它们也将永远无法登录。

另外,这也适用于scp,scp foo ubuntu:/ tmp / foo将使用相同的设置,而没有更多参数。奖金2,此设置不需要在家中进行任何更改,如果明天您和另一台计算机,只需将代码复制/粘贴到ssh配置中,更改主机和IP,仅此而已,无需在路由器上打开新端口


使用计算机作为SSH的中间产品有什么不利之处吗?假设我使用我的Raspberry Pi连接到网络中的其他计算机,它的性能会影响任务吗?
acourchesne

1
是的,覆盆子可能必须限制服务器的吞吐量,因为它必须充当服务器和客户端。如果您有足够的信心,则可以通过ssh隧道获得相同的结果。这样,树莓仅充当服务器,但您的学校计算机必须同时充当两个客户端。
potens

4

我这样做-我一直把rpi留着,一直一直直接插入路由器(因为它是运行起来最便宜的),然后仅将其插入ssh,然后从其反弹到其他路由器-不需要太多的关注。

也可以通过ssh管道VNC / RDP GUI,有点有趣,或者转发端口,使您可以浏览到台式计算机上的服务器,同时保持私有状态。

我添加此答案的原因是给您一些建议。

1)使用不同于22的端口。您可以在PI上将其保留为22,但是将路由器上的传入端口更改为10,000以上。否则,您每天将遭受数十到数百次攻击。 “一旦发现漏洞,您就会拥有SSH主机。”

2)使用证书代替用户名/密码-完全禁用用户名/密码登录。

3)如果您的IP地址可以更改,请使用dyndns类型的服务来为自己获取DNS hosthame(我使用noip,它是免费的,并且它们支持Linux客户端来更新您的IP地址-我想您可以将其更新为pi)。仍有其他一些公司免费提供此服务。

4)保持您的pi(或您ssh输入的任何内容)为最新(sudo apt-get更新)。我相信ssh到目前为止已经过审查,但是我也相信https ...


3

怀疑这是否更适合作为评论而不是答案,但我还是会在这里发布。

在执行此操作之前,您应考虑以下几点:

  1. 您将打开系统到Internet的连接,因此最好确保它们已打好补丁,并且安全配置得到了加强(例如,不允许root登录并使用pubkey代替密码)。
  2. 您的公共IP(请参阅whatismyip.com)可以更改,具体取决于您的ISP,它可以每天更改,或者几乎从不更改。这意味着您必须找到一种确定公共IP的方法。您可以每天从家庭网络访问whatismyip.com,创建一些应用程序,或使用动态DNS(DynDNS)将更改的公共IP映射到静态域名。
  3. 如果您想使用IPv6绕过与IPv4和NATing相关的所有麻烦,则还需要您的设备,路由器,ISP等来与IPv6通讯。当您的ISP不支持IPv6时,有些服务可以为您提供帮助,但是您的设备和路由器仍然必须进行交谈。
  4. 您打开互联网的端口和设备越多,攻击范围就越大。我建议您在网络中使用一个跳转框,并且仅允许通过SSH从互联网访问该设备。跳箱基本上是一个非常坚固的系统,您可以通过路由器将其移植到Internet。一旦连接到该盒子,您就可以通过它通过SSH连接到您的内部网络。跳线盒基本上可以是另一款Raspberry Pi。我建议使用专用设备,以使其尽可能得到加强(以及通过运行尽可能少的服务来实现)。
  5. (4a)除了使用SSH跳转框之外,您还可以设置VPN服务器,该服务器允许您从学校的设备浏览家庭网络(如果允许出站VPN连接)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.