设置 SSH 通过密钥登录
我们一般使用 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。
密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。
1. 制作密钥对
首先在客户端上制作密钥对。
ssh-keygen -t rsa
一路确认即可。
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.
2.发送密钥文件
将密钥公钥文件发送给远端的主机。
ssh-copy-id baixf@192.168.3.9
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "~/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'baixf@192.168.3.9'"
and check to make sure that only the key(s) you wanted were added.
3.配置软件
- Xshell
右键“属性” ---> "用户身份验证" ---> 勾选 “Public Key” 并"设置" ---> “用户密钥“ ---> ”浏览“ ---> "导入"或"生成"
- Termius
设置 ---> "Keychain" ---> NEW ---> "Import or Paste a Key" ---> "Import from key file"
- Vscode
远程服务器 ---> 配置ssh config文件 ---> 添加IdentityFile C:\Users\baixf\.ssh\id_rsa
Host baixf
HostName 192.168.3.9
User baixf
Port 22
IdentityFile C:\Users\baixf\.ssh\id_rsa
4.使用服务器端公钥私钥
以上方法为使用客户端的公钥私钥进行免密登录,但是在查阅资料时还看到一种通过服务器端公钥去实现免密登录的,原理应该一样,都是将公钥(锁)放在服务端,利用私钥(钥匙)去认证。
5.总结
- 多个钥匙开一把锁
- 把id_dsa.pub 复制给各个服务器
- 一个钥匙开duobasuo
- 把id_dsa 传给各个服务器
- 把id_dsa 传给自己
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?