我公司有一台 Linux 服务器 (CentOS 6 VM),位于企业防火墙后面,我拥有 VM 的完全 root 控制权,但无法控制防火墙。它上面运行着一个 ssh 服务器,我可以在公司网络内通过 ssh 连接到它。
当我在公司网络之外时,我想通过 ssh 连接到此虚拟机。我该如何实现?
这个 Linux VM 在 Mac 主机上运行,我可以使用 logmein 连接,然后访问 Linux VM。我想直接 ssh 到 Linux VM。
我猜测 Linux VM 必须与外部机器发起某种握手才能使其工作?
答案1
我会询问 IT 部门。他们安装此防火墙是有原因的,而您尝试执行的操作可能违反了安全策略。他们必须知道您需要从公司网络外部访问此服务器。如果安全策略没有问题,他们会帮助您获得此访问权限。
答案2
你修复了公司防火墙,允许 SSH 进入。你可能无法控制防火墙,但如果有业务需要访问,那么任何合理的公司政策都应该允许它,如果你为一家没有合理政策的公司工作,那么赶紧http://careers.serverfault.com/。
答案3
如果您有一个可以从两个位置访问的服务器,则可以设置反向 ssh 隧道
http://www.marksanborn.net/howto/bypass-firewall-and-nat-with-reverse-ssh-tunnel/
答案4
behindvpn
您可以创建从主机到主机的ssh 隧道outsidevpn
。
behindvpn$ ssh -R 1234:localhost:22 outsidevpn
这将打开主机1234
上的端口outsidevpn
,并将连接转发到主机22
上的端口behindvpn
。
现在你可以使用以下命令连接到 behindvpn 主机:
$ ssh outsidevpn -p 1234
笔记:您可能需要确保您的连接不会由于不活动或 shell 超时等原因而中断。
笔记:您可能还需要采取一些预防措施,以免降低内部网的安全性:
- 使
ssh
虚拟机上的所有密码都难以猜测 - 确保您创建隧道的机器是安全的(只能由您访问,具有防病毒软件、防火墙等)
- 设置
bind_address
到不可路由地址的隧道(例如127.0.0.1
)或隐藏防火墙后面的端口 - 仅在真正需要时限制端口开放的时间
- 限制只有您可以访问端口