我现有的设置如下,工作站<-> Maas 服务器<-> VM。
Maas 服务器有两个接口,eth0 的静态地址为 192.168.xx,eth1 的静态地址为 10.4.xx。eth1 还充当虚拟机的 DHCP 管理器。我的工作站的 IP 是 10.xxx,我可以通过 ssh 连接到 Maas 服务器。Maas 服务器反过来也可以通过 ssh 连接到虚拟机。由于工作站和虚拟机位于不同的网络上,因此我无法直接连接到虚拟机。
我尝试使用反向 SSH 隧道,
ssh -R 6333:localhost:22 [email protected]
从其中一个虚拟机连接到 Maas 服务器。之后我尝试使用以下方法从我的工作站连接到虚拟机:
ssh [email protected] -p 6333
但我反复收到此错误“权限被拒绝(公钥)”。
我已经将我的公钥复制到虚拟机的授权密钥文件中,但仍然出现同样的错误。是否有其他方法可以从工作站连接到虚拟机!如果有,请提供建议。
答案1
我建议您使用 sshuttle,它可以轻松地在您的工作站上通过 ssh 创建一个“vpn”,运行以下命令:
$ sudo apt-get install sshuttle
$ sshuttle -r [email protected] 10.x.x.x/24 # /24 is the subnet
然后在另一个终端(也在工作站中)您应该能够自动连接到 10.xxx/24 子网中的任何主机。
我一直都是这样做的,我真的建议你使用 sshuttle。
答案2
您可以配置您的 MaaS 服务器以在您的工作站和目标虚拟机之间进行路由。
启用 IP 转发: echo 1 > /proc/sys/net/ipv4/ip_forward
为了确保它持久存在,您还应该编辑 /etc/sysctl.conf 并确保该行net.ipv4.ip_forward=1
没有被注释。
然后,您可以在工作站上添加静态路由,通过 MaaS 服务器重定向虚拟机的流量。假设您的工作站正在运行 ubuntu,您可以执行以下命令:
route add -net 10.4.x.x netmask 255.255.0.0 gw 192.168.x.x
您还应该在 /etc/network/interfaces 中保留此静态路由。
这对于最新的 Ubuntu 版本有效,我已经在 12.04 及更新版本上进行了测试。