【authorized_keys配置及常见问题】
说明
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
文件:
-
首先,确保你已经创建了用户的
.ssh
目录。如果没有,可以使用以下命令创建:mkdir -p /home/username/.ssh chmod 700 /home/username/.ssh chown username:username /home/username/.ssh
-
在用户的
.ssh
目录中创建authorized_keys
文件:touch /home/username/.ssh/authorized_keys chmod 600 /home/username/.ssh/authorized_keys chown username:username /home/username/.ssh/authorized_keys
-
将用户的公钥添加到
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服务器配置正确,以便能够找到并使用这个文件。
标准实例:
- 用户
alice
想要通过公钥认证登录到SSH服务器。首先,她需要在自己的计算机上生成一对SSH密钥(公钥和私钥)。
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa
- 然后,她需要将生成的公钥(
id_rsa.pub
)复制到服务器上的authorized_keys
文件中。这通常位于她的主目录的.ssh
子目录中(例如/home/alice/.ssh/authorized_keys
)。
ssh-copy-id -i ~/.ssh/id_rsa.pub alice@remote-server
- 现在,当
alice
尝试通过SSH登录到服务器时,服务器将检查authorized_keys
文件中是否存在她提供的公钥。如果匹配成功,她将被允许登录。
非标准实例:
-
假设我们有一个名为
myapp
的应用程序,它需要使用SSH访问另一个服务器。我们希望将authorized_keys
文件存储在一个特定的目录中,例如/data/myapp/ssh/
。 -
首先,我们需要为
myapp
生成一对SSH密钥(公钥和私钥)。
ssh-keygen -t rsa -b 2048 -f /data/myapp/ssh/id_rsa
-
然后,我们需要将生成的公钥(
id_rsa.pub
)复制到目标服务器上的authorized_keys
文件中。在这个例子中,我们将文件放在/data/myapp/ssh/authorized_keys
。 -
接下来,我们需要更新SSH服务器的配置,以便它能够找到并使用这个非标准位置的
authorized_keys
文件。在/etc/ssh/sshd_config
文件中,我们需要添加或修改以下行:
AuthorizedKeysFile /data/myapp/ssh/authorized_keys
- 最后,我们需要重启SSH服务器以应用更改:
sudo systemctl restart sshd
现在,当myapp
尝试通过SSH访问目标服务器时,服务器将检查/data/myapp/ssh/authorized_keys
文件中是否存在提供的公钥。如果匹配成功,myapp
将被允许登录。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!