我的猜测是,正在运行的机器保留了 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/