如何为另一台没有访问权限的机器设置 ssh 公钥?

如何为另一台没有访问权限的机器设置 ssh 公钥?

这可能是一个愚蠢的问题,但我还是要问:
我已经为我的客户端机器 A 设置了一个 ssh 公钥。我将公钥复制到远程服务器,一切正常,我可以从机器 A 登录。

现在我也想从另一台机器访问该服务器,按照最佳实践,我想为客户端机器 B 生成另一个密钥,而不是再次使用机器 A 的密钥。当然,我可以生成密钥对,但我无法将新的公钥复制到服务器,因为客户端机器 B 无法访问服务器,只有 A 可以访问。

目前我看到的唯一解决方案似乎是将新的公钥放在 USB 上带到客户端机器 A,然后从那里将其复制到服务器,但当 n 台机器彼此相距较远时,这似乎有点繁琐且不太实用。

正确的方法是什么?

客户端和服务器都运行Linux。

答案1

不确定是否有正确的方法,您仍然需要以某种方式访问​​服务器,并且由于机器 A 目前只是接入点,因此您仍然需要至少一次物理访问它以及其他 n 台机器。那么,为什么不将所有公钥收集到 USB 棒并将其移动到机器 A 以传播到服务器用户的主 .ssh 配置目录呢?

即使没有 USB 记忆棒,也有一些选项。

变量 #1。临时启用从机器 A 到服务器的密码登录。以正常方式从机器 B、C、D 等生成密钥对并将公钥复制到服务器。禁用到服务器的密码登录。

Var #2。如果临时密码登录也被视为安全漏洞,请在服务器上创建一个除了主目录外无权访问其他任何内容的临时用户,仅为该用户启用密码登录。生成密钥对并将公钥从计算机 B、C、D 等复制到服务器,复制到该用户的主目录。公钥不是机密,其潜在的隐藏被认为是一种安全的情况,但其欺骗则不是,因此您可以考虑以某种方式对其进行加密或签名(gpg)。从计算机 A 登录到服务器,将公钥传播给服务器的用户,禁用使用的临时用户。

Var #3. 如果 ssh 服务器重新启动不是一种选择,您可以将机器 A 作为临时 ssh 服务器,并将其用作将 ssh 公钥复制到真实服务器的中间站。

Var #4。使用另一个通信渠道(另一个远程服务器,甚至可能是公共服务器、电子邮件等)。再次强调,公钥不是机密,但一定要对其进行签名以防止欺骗。

答案2

嗯,你必须将公钥传输到远程服务器不知何故

但是由于公钥并不保密(因此得名),您可以随意将其复制到 USB 记忆棒上、上传到某处、放在笔记中等...

只需确保您在服务器上添加的密钥确实是您从客户端上传的密钥!

答案3

我通常通过复制和粘贴来移动 ssh 密钥。但您也可以通过电子邮件、http、netcat 等发送它们,它们只是文本。

如果你可以将机器 C 的公钥放到机器 B 上,那么你就可以从 B ssh 到 A 并安装 C 的密钥

相关内容