参见英文答案 >
Is there a name based virtual host SSH reverse proxy?7个
我们有一台运行大量客户机的远程Xen服务器(在Linux上),只有几个IP可用.
我们有一台运行大量客户机的远程Xen服务器(在Linux上),只有几个IP可用.
每个来宾机应该可以通过外部世界的SSH直接访问.
现在,我们为每台客户机器分配一个单独的域名,指向少数可用IP之一.我们还为该客户机分配端口号.
因此,要访问名为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 hostname # prints foo $ssh bar.example.com hostname # prints bar
请注意,我确实知道.ssh / config和相关的客户端配置解决方案,我们现在正在使用它.这个问题具体是关于零客户端配置解决方案.
解决方法
foo / Client ----- Xen server \ bar
这听起来像SSH网关是你正在寻找的.
首先,在Xen服务器上创建2个新用户foo,bar:
Xen # useradd foo Xen # useradd bar
生成密钥对并将公钥复制到foo-server和bar-server:
Xen # su - foo Xen $ssh-keygen Xen $ssh-copy-id -i ~/.ssh/id_rsa.pub foo-user@foo-server
(为酒吧用户做同样的事)
现在,您可以从Xen服务器(SSH网关)登录到foo-server和bar-server,而无需提示输入密码.
下一步是让客户端使用公钥对Xen服务器进行身份验证:
Client $ssh-keygen Client $ssh-copy-id -i ~/.ssh/id_rsa.pub foo@Xen
最后一步是让Xen服务器打开与相应内部服务器的第二个连接.访问Xen,切换到foo,打开〜/ .ssh / authorized_keys文件并更改:
ssh-rsa AAAAB3N...== user@clienthost
至:
command="ssh -t -t foo-user@foo-server" ssh-rsa AAAAB3N...== user@clienthost
样本结果:
$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.
$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.