我们有一个远程 Xen 服务器,运行着很多来宾机器(在 Linux 上),只有几个 IP 可用。
每个来宾机器都应该可以通过 SSH 从外部直接访问。
现在我们为每台访客机器分配一个单独的域名,指向少数可用 IP 之一。我们还为那台访客机器分配了一个端口号。
因此,要访问名为 machine 的机器foo,应执行以下操作:
$ ssh foo.example.com -p 12345
...并访问名为的机器bar:
$ ssh bar.example.com -p 12346
双方foo.example.com并bar.example.com指向同一个IP。
是否有可能以某种方式摆脱此配置中的自定义端口并配置 SSH 服务器,侦听该 IP(或防火墙或服务器端的任何内容),以便根据域地址将传入连接路由到正确的来宾计算机,以便以下按预期工作?
$ ssh foo.example.com 主机名 # 打印 foo $ ssh bar.example.com 主机名 # 打印栏
请注意,我确实了解.ssh/config相关的客户端配置解决方案,我们现在正在使用它。这个问题专门针对零客户端配置解决方案。
qua*_*nta 12
foo
/
Client ----- Xen server
\
bar
Run Code Online (Sandbox Code Playgroud)
听起来您正在寻找 SSH 网关。
首先,创建2个新用户foo,barXen的服务器上:
Xen # useradd foo
Xen # useradd bar
Run Code Online (Sandbox Code Playgroud)
生成密钥对并将公钥复制到foo-server和bar-server:
Xen # su - foo
Xen $ ssh-keygen
Xen $ ssh-copy-id -i ~/.ssh/id_rsa.pub foo-user@foo-server
Run Code Online (Sandbox Code Playgroud)
(对bar用户做同样的事情)
现在,从Xen的服务器(SSH网关),您可以登录到foo-server和bar-server无密码提示。
下一步是让使用公钥进行Client身份验证Xen server:
Client $ ssh-keygen
Client $ ssh-copy-id -i ~/.ssh/id_rsa.pub foo@Xen
Run Code Online (Sandbox Code Playgroud)
最后一步是Xen server打开与相应内部服务器的第二个连接。访问 Xen,切换到foo,打开~/.ssh/authorized_keys文件并更改:
ssh-rsa AAAAB3N...== user@clienthost
Run Code Online (Sandbox Code Playgroud)
到:
command="ssh -t -t foo-user@foo-server" ssh-rsa AAAAB3N...== user@clienthost
Run Code Online (Sandbox Code Playgroud)
样本结果:
$ ssh foo-user@Xen
Last login: Thu Nov 10 13:02:25 2011 from Client
$ id
uid=500(foo-user) gid=500(foo-user) groups=500(foo-user) context=user_u:system_r:unconfined_t
$ exit
logout
Connection to foo-server closed.
Connection to Xen closed.
Run Code Online (Sandbox Code Playgroud)
$ ssh bar-user@Xen
Last login: Thu Nov 10 11:28:52 2011 from Client
$ id
uid=500(bar-user) gid=500(bar-user) groups=500(bar-user) context=user_u:system_r:unconfined_t
$ exit
logout
Connection to bar-server closed.
Connection to Xen closed.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8901 次 |
| 最近记录: |