我的家庭网络设置在 NAT 路由器后面,上面有两个 Linux 机器。有时,我想从家庭网络外部通过 ssh 连接到它们,但它们都没有公共 IP 地址。您有什么建议?
目前,我已为路由器设置了动态 DNS 记录,它将所有远程连接重新路由到一台服务器。如果我确实想 ssh 到另一台服务器,我首先 ssh 到第一台服务器,然后从第一台服务器 ssh 到第二台服务器。
是否有可以通过 ssh 隧道或虚拟域等直接连接到任一服务器的选项?
答案1
您始终可以进行端口转发,并为每台机器使用单独的端口。在/etc/ssh/sshd_config
“更改”行中,显示以下内容:
port 22
随心所欲。显然每台机器都不同。你可以对一台使用 22222,对另一台使用 22223。然后你可以运行,或者在 PuTTY 中更改端口。ssh -p 22222 [email protected]
更改后请务必重新启动 sshd 服务,以便它重新读取配置文件
答案2
您可以远程无需 IP 公共即可访问你的计算机的 SSH shell通过在您想要远程访问 SSH 的计算机上安装 robotito,使用桌面或智能手机(例如 Android)。
- 这将允许您在任何地方使用 Google Talk 客户端应用程序访问 SSH。
- 无需公共 IP 地址或特殊设置。
- 它是免费和开源的,不再支付任何应用服务。
我编写了一个脚本(在 Raspberry Pi 上的 raspbian 操作系统上进行了测试),以便您可以轻松地在 Raspberry Pi、Debian 或 Ubuntu Box(debian 软件包分发版)上安装 robotito。这是让您的 Linux 机器可远程控制的步骤:
打开 Shell 命令或者您可以称之为终端,转到您的主文件夹,通过命令下载安装程序脚本:
$wget https://opengateway.googlecode.com/files/robotito
然后通过输入命令运行脚本:
$sudo ./robotito
然后,如果 robotito 使用 gtalk 帐户,则可以从 config 文件夹中编辑文件 credentials.rb ,然后按 ctrl+x 和 y 保存。默认使用 nano 编辑器。
通过命令从 robotito 文件夹运行 robotito
$cd robotito
$./jabbershd start
现在已完成,您可以从任何 google talk 客户端使用 ssh,请不要忘记将 robotito gtalk 帐户添加到您的 google talk 帐户,并在使用该帐户之前通过聊天进行测试。
答案3
最简单的方法是更改 SSH 在内部网络上监听的端口,然后将这些 IP 转发到正确的内部框。
答案4
您当然可以使用 SSH 隧道,如果您使用 OpenSSH,您可以指定
-Lsomeport:other.host.internal.ip:otherHostSSHPort
在命令行上,或者在发出
<NEWLINE>~C
然后在另一个终端
ssh localhost -p someport