从主机 Windows 连接 Ubuntu VM 中 UTS 命名空间(主机名命名空间)中的 SSH

从主机 Windows 连接 Ubuntu VM 中 UTS 命名空间(主机名命名空间)中的 SSH

我有一项学校作业要研究命名空间。
对于所有这些,我都举了例子,但 UTS 的演示并不简单。我读过 UTS 命名空间经常用于虚拟服务器出于管理目的(在本地网络中命名计算机),我想通过在 2 个不同的 UTS 命名空间中拥有 2 个 SSH 服务器来展示这一点,并显示连接是由“ssh user@hostnameinns1”和“ssh user@hostnameinns2”建立的。 ssh 服务器在系统启动时运行,而我正在终端中执行以下操作:

$ sudo unshare -u
$ hostname hostnameinns2
$ service sshd start

我的实际设置是 Windows 内的 Ubuntu 虚拟机,具有端口 22 转发和“桥接模式”网络。我从 Windows 连接,但不幸的是它只连接到第一个 ns (原始/系统),但不连接到非共享的:

ssh: Could not resolve hostname hostnameinns2: No such host is known.

另外,$ service sshd stop在第一个 ns 中执行第二个 ns 之前没有帮助。

非常感谢任何帮助。提前致谢。

答案1

要使用 SSH 实现此目的,您(至少)需要生成 UTS 和网络命名空间(或在不同端口上运行 SSH 的第二个副本)。

对于 UTS 情况,系统调用手册页中有一个示例setnsman 2 setns-http://man7.org/linux/man-pages/man2/setns.2.html#EXAMPLE)以及您使用的命令的手册页,unshareman 1 unshare-http://man7.org/linux/man-pages/man1/unshare.1.html#EXAMPLES)。

根据unshare手册页:

# touch /root/uts-ns
# unshare --uts=/root/uts-ns hostname FOO
# nsenter --uts=/root/uts-ns hostname
FOO
# umount /root/uts-ns

建立持久UTS命名空间,并修改主机名。然后使用 nsenter 输入名称空间。通过卸载绑定引用来销毁命名空间。

相关内容