Linux SSH 使用密钥登陆
- 通常我们登录 Linux 服务器,我们需要使用密码进行登录,但是密码存在被暴力破解的可能。
- 可以将默认服务端口 22 改成其他不常用的端口。
- 可以设置非常复杂的密码。
- 可以使用密钥进行登录,彻底免去密码输入的过程。
- 原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
环境准备
- 如果你的机器是Windows系统,可能需要单独的软件来生成密钥,这里我用的是Git Bash,开发的伙伴应该都熟悉。
- Linux 系统一般自带,可以直接使用。
| |
| ssh-keygen -t rsa |
| ssh-keygen -t dsa |
- 在用户主目录生成密钥对。
- Windows 用户也在用户主目录中例如:“C:\Users\Chris.ssh”。
| |
| ~/.ssh/id_rsa |
| ~/.ssh/id_rsa.pub |
- 修改目标主机的SSH配置文件,允许使用密钥登陆
| vim /etc/ssh/sshd_config |
| RSAAuthentication yes |
| PubkeyAuthentication yes |
| AuthorizedKeysFile .ssh/authorized_keys |
- 将id传到目标主机上(会提示输入一次密码)
| ssh-copy-id postgres@172.26.114.87 |
使用说明
- Putty等软件可以直接加载私钥,然后直接访问目标主机。
- 这里我们用的是mobaxterm,同样可以直接使用密钥,更方便更安全。
权限问题
把密钥移动到其他机器上的时候,提示了权限问题。
Permissions 0744 for '/Users/chris/.ssh/id_rsa' are too open.
chmod 400 ~/id_rsa*
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?