将 ssh 密钥移动到 root 拥有的位置

将 ssh 密钥移动到 root 拥有的位置

我找到了一个文章其中提到了公钥-Ubuntu Linux 系统中的授权密钥位置

授权密钥位置

当用户尝试使用基于密钥的身份验证登录时,OpenSSH 服务器会使用 AuthorizedKeysFile 选项从服务器配置中指定的目录中查找授权密钥。默认值为用户主目录中的 .ssh/authorized_keys。

但是,将授权密钥存储在用户的主目录中意味着用户可以添加授权登录其帐户的新密钥。这很方便,但用户可以将这些密钥交给朋友或同事,甚至将其出售以换取比特币(这种情况确实发生过)。此外,SSH 密钥是永久的,在明确删除之前一直有效。

如果为根帐户或服务帐户添加了授权密钥,即使安装密钥的人离开了组织,这些密钥也很容易保持有效。如果没有对未经授权的新密钥进行检测和警报,它们也是黑客在系统上建立永久存在的便捷方式。

出于这些原因,大多数大型组织希望将授权密钥移至root 拥有的位置并为其建立了受控的配置和终止流程。

我想将 SSH 密钥移动到 root 拥有的位置

以下是标准解决方案。

将 SSH 密钥移动到 root 拥有的位置

原则上,将 SSH 密钥移动到 root 拥有的位置很容易:

  1. 创建一个合适的根拥有的目录,例如 /etc/ssh/keys,授权密钥存储在该目录下。
  2. 在此目录下为每个用户创建一个子目录,并将每个用户的authorized_keys文件移动到/etc/ssh/keys//authorized_keys。
  3. 最后,在 /etc/ssh/sshd_config 中更改设置 AuthorizedKeysFile /etc/ssh/keys/%u/authorized_keys。

我的问题是,在 Ubuntu Linux 16.04 EC2 实例中

  • 如果我们在根级别指定authorized_key位置,那么~/.ssh/authorized_keys还能起作用吗?
  • 我可以通过 ssh 连接我的 ec2 实例吗?

答案1

SSH 公钥文件

是的,~/.ssh/authorized_keys如果您在 中指定它,它仍将起作用/etc/ssh/sshd_config。查看sshd_配置手册页:

 AuthorizedKeysFile
         Specifies the file that contains the public keys that can be used for user
         authentication.  The format is described in the AUTHORIZED_KEYS FILE FORMAT section
         of sshd(8).  AuthorizedKeysFile may contain tokens of the form %T which are
         substituted during connection setup.  The following tokens are defined: %% is
         replaced by a literal '%', %h is replaced by the home directory of the user being
         authenticated, and %u is replaced by the username of that user.  After expansion,
         AuthorizedKeysFile is taken to be an absolute path or one relative to the user's
         home directory.  Multiple files may be listed, separated by whitespace.  Alternately
         this option may be set to “none” to skip checking for user keys in files.  The
         default is “.ssh/authorized_keys .ssh/authorized_keys2”.

但你必须将钥匙存放在文件不是目录。

更改 sshd 配置时,当前 ssh 会话不会停止工作。因此,您可以更改配置,重新启动 sshd 并测试新配置。

# edit the configuration
$ sudo vi /etc/ssh/sshd_config

# restart the sshd
$ sudo systemctl restart sshd.service

# test from your remote hosts
$ ssh -i somenewkey root/user@ec2host

来自 LDAP 的 SSH 公钥

通过中央实例管理 SSH 公钥的一种方法是使用 LDAP 服务器。这邮政描述了身份验证工作的基本要求。还有一些不错的脚本管理存储的公钥。主要缺点是,您需要设置和管理 LDAP 服务器(使用加密、证书等),并且该服务器可从所有 VM 或容器实例访问。

相关内容