【authorized_keys配置及常见问题】

2024-01-02 18:02:50

说明

authorized_keys 文件用于存储允许通过 SSH 访问特定用户帐户的公钥。当用户尝试通过 SSH 连接到服务器时,服务器会使用此文件中的公钥验证用户的身份。如果公钥匹配,用户将被允许访问。这有助于提高安全性,因为公钥认证比使用密码更安全。

authorized_keys 文件通常位于用户的主目录下的 .ssh 子目录中,例如 /home/username/.ssh/authorized_keys。它的作用范围仅限于其所属的用户帐户。这意味着,只有具有相应私钥的用户才能通过 SSH 访问服务器。

在某些情况下,你可能会在其他目录(如 /root/.ssh/)找到 authorized_keys 文件。这通常是因为这些目录属于特定的用户或系统管理员,他们需要允许其他用户或服务访问。

是的,你可以在任何地方创建 authorized_keys 文件,但是为了保持良好的组织和安全实践,建议将其放在用户的 .ssh 目录中。如果你在其他目录创建 authorized_keys 文件,你需要确保 SSH 配置文件(通常是 /etc/ssh/sshd_config)中的 AuthorizedKeysFile 指令指向了正确的文件路径。

以下是一个简单的示例,说明如何在用户的 .ssh 目录中创建 authorized_keys 文件:

  1. 首先,确保你已经创建了用户的 .ssh 目录。如果没有,可以使用以下命令创建:

    mkdir -p /home/username/.ssh
    chmod 700 /home/username/.ssh
    chown username:username /home/username/.ssh
    
  2. 在用户的 .ssh 目录中创建 authorized_keys 文件:

    touch /home/username/.ssh/authorized_keys
    chmod 600 /home/username/.ssh/authorized_keys
    chown username:username /home/username/.ssh/authorized_keys
    
  3. 将用户的公钥添加到 authorized_keys 文件中:

    echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD... username@example.com" >> /home/username/.ssh/authorized_keys
    

    请注意,将公钥粘贴到文件中时,确保不要删除或更改任何空格。现在,具有相应私钥的用户应该能够通过 SSH 访问服务器。

authorized_keys文件是SSH(安全外壳协议)中用于公钥认证的一部分。它的主要作用是存储允许通过公钥认证登录到SSH服务器的用户的公钥。当用户尝试通过公钥认证登录时,SSH服务器会检查authorized_keys文件,以确认提供的公钥是否存在于文件中。如果匹配成功,用户将被允许登录。

作用域:authorized_keys文件通常位于用户主目录的.ssh子目录中(例如/home/username/.ssh/authorized_keys)。这意味着每个用户都可以有自己的authorized_keys文件,用于存储允许登录到其账户的公钥。这个文件的作用域仅限于该特定用户。

为什么好多目录都有这个文件:在某些情况下,可能需要在其他目录中创建authorized_keys文件。例如,当使用特定于目录的访问控制时,或者当在系统中使用了非标准的用户主目录配置时。然而,在大多数情况下,这个文件应该位于用户的.ssh目录中。

自己也能随便创建吗:是的,你可以在任何目录中创建authorized_keys文件,但是需要确保SSH服务器配置正确,以便能够找到并使用这个文件。通常,建议将其放在用户主目录的.ssh子目录中,以遵循标准实践。

为什么/data/目录下也能创建:在某些情况下,可能需要在非标准位置(如/data/目录)存储authorized_keys文件。这可能是因为特定的系统配置、权限要求或其他原因。然而,在这种情况下,需要确保SSH服务器配置正确,以便能够找到并使用这个文件。

标准实例:

  1. 用户alice想要通过公钥认证登录到SSH服务器。首先,她需要在自己的计算机上生成一对SSH密钥(公钥和私钥)。
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa
  1. 然后,她需要将生成的公钥(id_rsa.pub)复制到服务器上的authorized_keys文件中。这通常位于她的主目录的.ssh子目录中(例如/home/alice/.ssh/authorized_keys)。
ssh-copy-id -i ~/.ssh/id_rsa.pub alice@remote-server
  1. 现在,当alice尝试通过SSH登录到服务器时,服务器将检查authorized_keys文件中是否存在她提供的公钥。如果匹配成功,她将被允许登录。

非标准实例:

  1. 假设我们有一个名为myapp的应用程序,它需要使用SSH访问另一个服务器。我们希望将authorized_keys文件存储在一个特定的目录中,例如/data/myapp/ssh/

  2. 首先,我们需要为myapp生成一对SSH密钥(公钥和私钥)。

ssh-keygen -t rsa -b 2048 -f /data/myapp/ssh/id_rsa
  1. 然后,我们需要将生成的公钥(id_rsa.pub)复制到目标服务器上的authorized_keys文件中。在这个例子中,我们将文件放在/data/myapp/ssh/authorized_keys

  2. 接下来,我们需要更新SSH服务器的配置,以便它能够找到并使用这个非标准位置的authorized_keys文件。在/etc/ssh/sshd_config文件中,我们需要添加或修改以下行:

AuthorizedKeysFile /data/myapp/ssh/authorized_keys
  1. 最后,我们需要重启SSH服务器以应用更改:
sudo systemctl restart sshd

现在,当myapp尝试通过SSH访问目标服务器时,服务器将检查/data/myapp/ssh/authorized_keys文件中是否存在提供的公钥。如果匹配成功,myapp将被允许登录。

文章来源:https://blog.csdn.net/weixin_46356409/article/details/135345283
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。