![授权私有虚拟网络中多台服务器无密码 ssh 连接](https://linux22.com/image/1633241/%E6%8E%88%E6%9D%83%E7%A7%81%E6%9C%89%E8%99%9A%E6%8B%9F%E7%BD%91%E7%BB%9C%E4%B8%AD%E5%A4%9A%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%A0%E5%AF%86%E7%A0%81%20ssh%20%E8%BF%9E%E6%8E%A5.png)
我正在尝试建立一个包含四台机器的私有系统,我们把它们称为
Host - IP 1,
Proxy - IP 2,
Server - IP 3,
Application - IP 4
用户通过 ssh 连接到主机(我使用这个不需要密码),然后从主机,您可以使用 ssh 连接到代理、应用程序或服务器,但需要密码。我希望能够使用 ssh 而不需要密码。但是,我不太清楚如何实现这一点,但这显然是错误的,因为当我尝试时连接就挂起了,用户在所有机器上都有一个帐户,因此“john”存在于所有机器上,目前我只是将“john”连接到“john”,所以我不必做整个 name@server 的事情(但也许最好这样做,我不知道,我可以使用“ssh IP”连接到 john 或使用“name@IP”连接到其他用户)
例如,我有以下内容(主机名是必需的吗?应用程序不一定有主机名),此变体挂起
Host IP 3
HostName ServerHostName
User john
ProxyJump IP 1
此变体仍需要密码
Host IP 1
HostName ServerHostName
User john
ProxyJump IP 3
我究竟如何实现 .ssh/config 文件才能正确连接而不需要密码?
连接图
答案1
对于您的图表,三个“内部”服务器应该有一个ProxyJump <host>
,并且主机本身根本不应该有 ProxyJump。
但是,无论多少代理和跳转都无法消除身份验证要求。您的内部服务器平等对待所有传入连接;没有办法预先验证通过主机的连接,特别是由于 ProxyJump 的工作方式(SSH 客户端在用户的本地系统上运行,而不是在代理上运行)。
如果您目前有主机的无密码登录系统(例如带有 authorized_keys 文件的公钥),则只需将其复制到所有其他服务器即可。首先,客户端将使用其公钥或票证登录主机,然后他们将使用相同的密钥登录应用程序。
(如果你将 Host 用作交互式 shell 服务器 - 用户连接到 shell,然后手动运行另一个 'ssh' 命令 - 你可以例如使用基于主机的身份验证。但你最终还是会失去便利,而不是获得任何便利。)