同一 IP 上使用子域名进行不同的 SSH 登录

同一 IP 上使用子域名进行不同的 SSH 登录

我的情况如下:我有一个指向本地网络 (NAT) 的域名,我们称之为 domain.ch。我设置了一个指向与 domain.ch 相同 IP 的子域名 sub.domain.ch。

我希望的是将根目录切换到其他地方,而不是两次都使用同一个用户。效果是模拟两台不同的机器。ssh [email protected]ssh [email protected]

我认为解决方案是将 sub.domain.ch:22 重定向到其他端口,然后使用 ssh 监听它,但我甚至不知道如何轻松地做到这一点,并且可能有一个更简单的解决方案。

答案1

SSH 握手包括版本交换、密钥交换和椭圆曲线 Diffie-Hellman (ECDH) 初始化。与 TLS 或HostHTTP 中的 SNI 不同,SSH 握手的这些步骤不涉及主机名。

根本没什么可区分sub.example.comexample.com;从 DNS 获取 IP 地址后,IP 地址本身就用于建立连接。您必须使用不同的 IP 地址或不同的 TCP 端口。

答案2

使用 SSH 时,域名将转换为 IP 地址,不能由客户端用于“切换” - 因此如果需要在服务器端进行此操作,则无法执行此操作。(除了 @esajokinen 正确的部分答案外,SSH 也不会使用 srv 记录)。

然而,在客户端,有一些可能的解决方案。例如,Openssh 具有相当强大的配置选项,这些选项确实可以在主机名基础上工作。如果在客户端指定不同的设置是合适的,则有一些选项 - 包括(设置起来相当复杂)使用绑定到 2 个不同端口的 SSH。您的 .SSH/cinfig 文件可能看起来像

  Host subdomain.ch
       Port 2222

将您连接到端口 2222 而不是 22。

但是还有很多更简单的示例 - 比如指定不同的用户名、密钥对或最有价值的 ProxyCommand 参数。ProxyCommand 允许您指定要运行的任意命令,因此如果您的用户相当于 root 用户,您可以告诉它执行 chroot 命令以限制可见的 SSH 环境。

然而,从安全角度来看,这些都不是可靠的,我也想知道您是否误解了 SSH - SSH 是一种高度灵活的协议,允许系统相互通信,但据我所知,它没有 chroot/jails 的概念。限制由操作系统和用户权限控制。

相关内容