authorized_keys

authorized_keys

我的猜测是,正在运行的机器保留了 a到我的具有授权访问权限的用户名(我是远程用户)ssh server的映射。ssh public key但我和其他一些人也能够代表某些本地用户登录到远程计算机(这意味着我们有一台远程计算机,john.doe该计算机上有本地用户)。这是否意味着还存在一个用户john.doe到多个ssh public keys有权代表访问的用户的映射john.doe

答案1

最简洁的答案是不。

示例场景:您 (Bob) 希望以 身份连接到远程主机 ( earth) alice

SSH 是从某个地方(Unix、Windows、平板电脑等)到alice主机 ( ) 上的用户 ( )的连接earth

当您 ( bob) 无密码连接时,您使用私钥(在 Unix 上,它通常位于 中~/.ssh,但您可以将其放在任何地方)。

远程主机只有两个事实:

  • 你想连接alice
  • 您声称拥有私钥(您提供了其中的指纹)

拥有密钥公共部分的远程主机 ( earth) 发出一个任何拥有私有部分都可以回答的挑战。挑战完成后,您只需连接即可。

alice在这种情况下,您证明您拥有其中一个授权密钥的私有部分。但远程主机 ( earth) 无法知道您是 Bob、Igor 或其他任何人。

请记住,您可以从 Windows 或 Android 设备进行连接,其中用户的方案完全不同。

authorized_keys

此文件列出了可以连接的公钥(质询后)。

该文件位于

  • ${HOME}/.ssh/authorized_keys(默认)
  • AuthorizedKeysFile文件中指定的任何位置 sshd_config。看man sshd_config

答案2

我不完全理解你的问题,但是 SSH 密钥映射到用户johndoe(并授权他无密码登录远程服务器)的方式是公钥部分包含在文件中

~johndoe/.ssh/authorized_keys  

在远程服务器上。

如果现在您的目录中有私钥部分~/.ssh/(即文件~/.ssh/id_rsa),您可以通过以下命令在远程服务器上无密码登录:

ssh johndoe@remoteserver

无论您在本地计算机上的用户名如何。

答案3

是的,可以使用authorized_keys 文件将私钥链接到一个或多个用户。

为了让您的 Linux 服务器识别并接受您的密钥对,您需要将公钥上传到您的服务器。更具体地说,您需要将公钥上传到您要登录的用户的主目录。如果您想使用密钥对登录服务器上的多个用户,则需要将公钥添加到每个用户。

要为您的服务器用户之一设置 SSH 密钥身份验证,请将您的公钥添加到该用户的authorized_keys 文件内的新行中。该文件存储在用户主文件夹下名为 .ssh/ 的目录中。一个用户的authorized_keys文件可以存储多个公钥,并且每个公钥都在其自己的行中列出。如果您的文件包含多个公钥,则列出的每个密钥的所有者将能够以该用户身份登录。

来源:https://www.linode.com/docs/security/authentication/use-public-key-authentication-with-ssh/

相关内容