如果这是重复的,我很抱歉。
我搜索了我的案例,但找不到与我的情况相似的正确场景,尽管我认为这种情况肯定曾经出现在某人身上。
现在开始:
我的远程 Linux 服务器上有一个用户,ServerUser。
我的家用电脑上有一个用户,HomeUser。
我的工作笔记本电脑上有一个用户,WorkUser。
我想使用单独的 ssh 密钥将 HomeUser 和 WorkUser 连接到 ServerUser,而不是生成一个密钥并将其复制到其他用户。
家庭用户 --- ABC-SSH-KEY ---> 服务器用户
工作用户 --- XYZ-SSH-KEY ---> 服务器用户
对于我来说这似乎是一种很常见的情况但奇怪的是我无法找到有关该情况的信息。
我该如何设置?
解决方案评论:
我首先在服务器上重新启用了密码登录,但标记的解决方案工作正常。
因此,为了让我的工作笔记本电脑上的新密钥正常工作,我的步骤总共如下:
- 在工作笔记本电脑上生成密钥,例如
ssh-keygen -f ~/.ssh/publicKeyOnWorkLaptop
(-f 选项指定输出路径和名称) - 使用已经拥有有效 ssh 密钥的用户从我的家用电脑登录服务器
/etc/ssh/sshd_config
使用以下命令重新启用服务器上的 ssh 密码登录PasswordAuthentication yes
- 回到工作笔记本电脑上运行
ssh-copy-id -i ~/.ssh/publicKeyOnWorkLaptop.pub ServerUser@Server
,在提示时输入密码 - 恢复
PasswordAuthentication no
步骤 3 中的ssh 密码登录 - 使用工作笔记本电脑验证公钥登录是否有效
ssh -i ~/.ssh/publicKeyOnWorkLaptop ServerUser@Server
答案1
只需将公钥合并到一个 authorized_keys 文件中即可。每个密钥只占一行。该文件中找到的任何密钥都可用于身份验证。
如果您有有效的密码(或其他方式)进行身份验证,则您可以ssh-copy-id
从所有机器上运行。它会将所有可访问的本地公钥添加到远程授权密钥中。
文件中的最后一个字段(每行末尾的注释)用于描述每个密钥及其来源。例如,您可以使用它来指定此密钥适用于哪台机器。
您还可以通过不同的方式限制某些密钥。例如,您可以设置密钥,使其只允许从一个 IP 地址使用,即使有效的身份验证请求来自另一个 IP 地址,也不会接受该密钥。
看man sshd
,有关详细信息,请参阅 AUTHORIZED_KEYS 文件格式部分。