下面不是询问基于名称的虚拟路由,而是使用用户名或身份键进行虚拟路由。
是否有人做过对用户透明的SSH代理,但是它们被路由到的最终主机是由以下任一项决定的:用户名、标识键、DNS主机名。我想DNS主机名在协议中是不可能的,但是它可以使用标识密钥。
例如,我希望用户能够将所有SSH都放到同一台计算机上,但是他们最终在不同的VPS节点上结束: ssh -i identity_rsa user@example.com。
这样做有几个非常好的特性:
我担心这需要一个自定义(合法) MitM SSH服务器,因为我想要一个正常的端到端SSH连接,它可以执行SCP和代理转发。
代理转发可以使用强制命令吗?我是否可以基于公钥创建强制命令,将SSH -A调用到内部主机?
发布于 2013-06-18 17:50:53
我很难想出一个很好的理由去做你所描述的事情。我想到的可能性大多是不可取的。
我建议你给出更多关于你想要解决的潜在问题的背景信息,而且答案可能会把你带到一个完全不同的方向。
基于更多信息的
选项2更接近您要求的内容,但选项1是更好的IMHO。
注意,选项2会受到壳体冲击 bash攻击的影响。我希望人们在很久以前就已经修补了这个问题,但这是一个例子,说明在主机上终止ssh访问(然后通过第二个ssh连接传递连接)可能容易受到基于端口转发的解决方案的攻击。
发布于 2013-09-02 14:45:56
我对此仍持怀疑态度(见我先前的回答)。您不能在这里执行反向代理,除非您有一个反向代理,该代理了解如何进行ssh身份验证,即使这样,您的代理也是ssh连接的端点,因此它对遍历它的数据是保密的,它有用于用户连接的ssh键,以及与其背后的服务器的连接。如果有人能够访问该系统,那么最有可能的是它背后的一切都将结束。
如果您准备让用户登录两次,那么您可以避免其中的一些风险,第二个连接在通往堡垒主机的第一个连接上被隧道化,但是您已经说过,这不是您想要的。
所以,你真的需要锁定你的堡垒主机。
您的堡垒主机需要有一堆用户帐户,每个帐户都有ssh私钥在它们的.ssh文件夹中,以便登录它们后面的主机。他们还会保存用户登录的公钥。
您需要确保除了ssh之外,用户不能在堡垒上运行任何东西,只对后面网络上的主机运行。在ssh authorized_keys文件中设置ssh命令,因此使用公钥登录将自动运行ssh命令,以连接到堡垒后面的主机。请参阅man sshd中的授权密钥部分,特别是“command=”位。
https://serverfault.com/questions/516799
复制相似问题