如何启用 SSH 密钥对而不暴露它

如何启用 SSH 密钥对而不暴露它

我们有一个[email protected]SSH 帐户,可以使用ts_key.pub/ts_key.priv网关服务器 ( gateway.org) 的 SSH 密钥对进行访问。我们有许多系统管理员需要访问该帐户。他们每个人都有自己的 SSH 帐户gateway.org,例如[email protected].

有没有办法继续ts_key.pub/ts_key.priv使用gateway.org并允许系统管理员使用它,但是不暴露它给系统管理员?因此,如果其中一人离职,并且他的帐户gateway.org被关闭,那么他将无法ts_key.pub/ts_key.priv再使用。

更新:有人建议我(IRC/#OpenSSH 上的好人)使用密码加密私钥,然后使用 ssh-agent/ssh-add。不过具体细节我没搞清楚...

答案1

作为替代方案,您可以在authorized_keys 文件中添加密钥前缀[电子邮件受保护]使用“from=ip.address.of.gateway.org”,仅当连接来自网关系统时才有效地使密钥起作用。

有关更多详细信息,请参阅“man sshd”。

另一种可能性是将私钥放在gateway.org禁用登录的单独帐户上。我们以该帐户secretkeeper为例。然后,您可以向系统管理员授予对该帐户的有限 sudo 访问权限,如下所示(sudoers文件语法):

User_Alias ADMINUSERS=sysadmin1, sysadmin2, sysadmin3 #...etc.

ADMINUSERS ALL=(secretkeeper) /usr/bin/ssh secretremote

为了用户友好性,指定~secretkeeper/.ssh/config尽可能多的连接参数:

Host secretremote
    User topsecret
    HostName remote.org
    EscapeChar none
    IdentityFile /some/where/ts_key.priv

现在您sysadmin1和其他人将能够运行sudo -u secretkeeper ssh secretremote,但不能通过其他命令sudo(除非有其他sudoers定义)。secretremote只是一个关键字,可以是任何内容,只要它在sudoers~secretkeeper/.ssh/config文件中相同即可。

由于文件中指定的命令sudoers包含参数,因此仅接受该特定命令。然后sudo将以用户身份运行该命令(并且仅该命令)secretkeeper,该命令可以读取SSH配置文件和私钥,然后建立连接。并且由于sudo会话仅运行该ssh命令,因此一旦 SSH 断开连接,sudo会话就会结束;将不会以secretkeeper用户身份运行交互式 shell。

当然,所有这一切都要求您的系统管理员用户不能拥有gateway.org系统的 root 访问权限。

相关内容