目标: ssh raspi
应该在局域网内和公共Internet上工作。
为此,您需要确保名称解析为LAN上的内部IP,以及外部的公共IP。
首先,您应该获取一个域名,例如raspi.yourdomain.com
。请访问http://freedns.afraid.org/获取免费域,以供业余使用。将域指向您的公共IP
对于局域网,我建议运行DNSMasq。开放的DD-WRT固件与DNSMasq紧密集成,可用于DHCP和DNS。您只需要告诉它您的搜索域(“ yourdomain.com”),它将根据每个客户端的请求名称自动分配DNS名称。为了使它起作用,raspi的/ etc / hostname应该读为raspi
。
设置完成后,raspi.yourdomain.com应该解析为LAN上的本地IP(只需确保您在所有计算机上都使用本地DNS)。
现在,您可能不想将端口22暴露给公共互联网,因为您将获得大量的嗅探器流量。因此,您的路由器可能会将raspi:22暴露为其他端口,例如1234。要在公用网络和内部网络上使用相同的端口,可以向raspi添加端口重定向规则。在Linux上:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1234 -j REDIRECT --to-port 22
sudo sh -c 'iptables-save > /etc/iptables/iptables.rules'
(将eth0更改为网络接口的名称,如下所示: ip link
或ifconfig
,将1234更改为公共端口)
现在你可以 ssh -p 1234 raspi.yourdomain.com
从公共和局域网中访问。
您可以在客户端计算机上的〜/ .ssh / config中添加一个条目,以将其简化为 ssh raspi
,如@DopeGhoti所述。
如果要在同一公共IP上公开其他计算机的SSH端口,只需使用另一个DNS名称和公共端口重复该过程。干杯!