在服务器上添加多个 SSH 公钥以支持多台电脑登录
在服务器上添加多个 SSH 公钥以支持多台电脑登录
Bornforthis你好,我是悦创。
我有四台电脑,其中 Windows 1台、Apple:MacBook Pro 16、MacBook Pro 13、iMac 各一台。所以在工作中,变换电脑是必不可免的。
有时会经常往返市区和家中或者各个房间陪着老婆孩子,所以数据的协同或者网站的部署就需要支持多台密钥,也就是:一台服务器要同时支持多台电脑进行免密登陆,便于部署或者交互 Github。
📝以下作为记录,以及部分报错记录:
当你需要将多台电脑通过 SSH 访问同一台服务器时,可以通过将每台电脑的公钥添加到服务器的 authorized_keys
文件中。本文将详细介绍如何将新电脑的 SSH 公钥添加到已经存在的服务器中。
步骤 1: 获取新电脑的 SSH 公钥
首先,需要在新电脑上获取 SSH 公钥。打开新电脑的终端,运行以下命令:
1 | cat ~/.ssh/id_rsa.pub |
这将显示新电脑的公钥,通常是以 ssh-rsa
开头的一长串字符。
步骤 2: 连接到服务器
使用已有的 SSH 密钥登录到目标服务器。可以通过以下命令连接:
1 | ssh 用户名@服务器IP |
例如:
1 | ssh root@192.168.1.100 |
步骤 3: 将新公钥添加到 authorized_keys
一旦登录到服务器,接下来需要将新电脑的公钥添加到服务器的 ~/.ssh/authorized_keys
文件中。您可以通过以下命令将公钥追加到文件末尾:
1 | echo "这里修改为你的新公钥内容" >> ~/.ssh/authorized_keys |
如果希望手动编辑 authorized_keys
文件,可以使用文本编辑器,例如 nano
或 vi
:
1 | nano ~/.ssh/authorized_keys |
然后将新公钥粘贴到文件末尾并保存。
步骤 4: 设置正确的权限
确保 ~/.ssh
目录和 authorized_keys
文件的权限设置正确。运行以下命令以确保它们的权限正确:
1 | chmod 700 ~/.ssh |
步骤 5: 测试 SSH 登录
退出服务器,并从新电脑尝试通过 SSH 登录服务器,确保可以无密码登录:
1 | ssh 用户名@服务器IP |
如果没有输入密码并成功登录,说明您已经成功将新电脑的公钥添加到服务器。
小结
通过将多台电脑的公钥添加到服务器的 ~/.ssh/authorized_keys
文件中,可以轻松地实现多台机器无密码 SSH 登录。如果您有多台电脑需要访问服务器,只需要重复上述步骤,将每台电脑的公钥追加到 authorized_keys
文件中即可。
知识点学习📑
将新的公钥追加到 ~/.ssh/authorized_keys 文件的末尾是安全的,不会与已有的公钥冲突。每一行代表一个独立的公钥,SSH 会分别验证每一个公钥。
为什么追加到末尾不会冲突?
- 每个公钥都是一行文本,格式通常是
ssh-rsa <公钥内容> <用户名@主机名>
。 - SSH 会逐行检查
authorized_keys
文件中每一个公钥,匹配成功后即允许连接。因此,多个公钥共存时,SSH 会根据匹配情况逐一验证,并且不会出现冲突。 - 只要每个公钥都位于文件的不同一行,SSH 就能正确识别并使用它们。
例子
假设原本的 authorized_keys
文件已经包含了如下公钥:
1 | ssh-rsa AAAAB3...xyz1== user1@server |
当我们将新的公钥追加到末尾后,authorized_keys
文件将变成:
1 | ssh-rsa AAAAB3...xyz1== user1@server |
这样,SSH 会检查两个公钥,第一个公钥用于从 user1@server
登录,第二个公钥用于从 user2@other-server
登录,而不会发生任何冲突。
只要每个公钥都位于
authorized_keys
文件中的一行,并且每行的内容正确,追加新的公钥是完全没有问题的,SSH 会逐一验证每个公钥。
报错处理
在使用 SSH 连接远程服务器时,遇到以下警告信息:
1 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
这是因为服务器的 SSH 主机密钥发生了变化,或的计算机的 known_hosts
文件记录了一个不同的密钥。为了解决此问题,可以按以下步骤操作。
解决方案
方法 1: 删除 known_hosts
文件中的旧密钥
编辑
known_hosts
文件,找到并删除与此 IP 地址相关的旧密钥。打开
known_hosts
文件:1
nano ~/.ssh/known_hosts
根据提示信息中的内容,删除第 9 行(因为它指出“Offending ECDSA key in /Users/huangjiabao/.ssh/known_hosts:9”),这意味着第 9 行是问题所在。
删除对应行后,保存并退出。
重新连接,SSH 会提示您接受新的主机密钥:
1
ssh root@121.89.218.11
当您看到如下提示时,输入
yes
来信任新的密钥:1
2
3The authenticity of host '121.89.218.11' can't be established.
ED25519 key fingerprint is SHA256:EFwUHe6V5x2GawwukXX+7/iL22jWJxKlQ7tvokIOXRc.
Are you sure you want to continue connecting (yes/no)?
方法 2: 自动删除旧的 known_hosts
记录
如果您不想手动编辑文件,可以使用以下命令直接从 known_hosts
文件中删除与此 IP 相关的记录:
1 | ssh-keygen -R 121.89.218.11 |
这将自动删除 known_hosts
文件中的相关记录,然后您可以再次尝试 SSH 连接:
1 | ssh root@121.89.218.11 |
方法 3: 禁用主机密钥检查(不推荐,除非您理解风险)
如果您暂时不想处理密钥检查问题,可以通过使用 -o StrictHostKeyChecking=no
选项来禁用主机密钥验证,但这并不推荐,因为它会降低安全性:
1 | ssh -o StrictHostKeyChecking=no root@121.89.218.11 |
总结
推荐的方法是 删除旧的密钥 并接受新的密钥,以确保您连接的是正确的服务器,并保持连接的安全性。如果有疑问,可以先核实一下服务器是否真的进行了更换或更新,以确保您的连接安全。
🪧公众号:AI悦创【二维码】
AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Web、Linux」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh