我在家中有多台计算机,希望从学校使用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。有什么办法可以设置为可以访问两台计算机?
我在家中有多台计算机,希望从学校使用SSH和VNC进行访问。为了做到这一点,我给他们提供了静态IP:
我知道SSH使用端口22,因此我可以将此端口转发到路由器上的192.168.1.51:22,但是这样就无法通过SSH到Raspberry Pi。有什么办法可以设置为可以访问两台计算机?
Answers:
如果您具有IPv6,则甚至不需要端口转发!只需获取您的永久IPv6地址(基于您的MAC地址,这样就可以保证保持不变,除非您的ISP不知道IPv6的工作方式),然后使用它来进行隧道传输。由于您的IPv6地址是面向公众的,因此可以无需访问本地NAT即可访问您,而无需在任何地方启用端口转发。它将“正常工作”。
但是请注意,IPv6仍未真正在全球范围内受支持,并且您的家庭Internet连接和远程Internet连接都需要具有完全正常工作的IPv6才能做到这一点。
但是,如果您像大多数人一样只拥有IPv4,那么仍然有办法!一些路由器允许您将特定的源端口转发到特定的目标端口,例如:
在这个例子中,端口22
是直接传递给我的机器sheepdog
,而端口292
被转发到端口22
上coyote
。
最后,如果您的路由器不具备此功能,则可以更改端口,因为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的开销略少。您通常只需要为一台计算机转发一个端口。
如果您知道一台计算机始终处于开机状态,则也可以将其用作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,仅此而已,无需在路由器上打开新端口
我这样做-我一直把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 ...
怀疑这是否更适合作为评论而不是答案,但我还是会在这里发布。
在执行此操作之前,您应考虑以下几点: