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