前言
由于本人主要使用的为Windows 所以本教程均是以Windows环境下的操作
其实Linux也是同理
第一步:生成密钥对
不加任何参数,Windows 下默认:
- 算法:RSA
- 密钥长度:2048 位
- 保存路径:
C:\Users\用户名\.ssh\id_rsa
- 私钥:
id_rsa
- 公钥:
id_rsa.pub
本人一般懒得加参数,直接一把梭。当然如果你有特殊需求,下面列了几种常用算法。
常用密钥算法对比
(奇怪的知识又增加了,在没有上网搜之前都不知道有这么多种算法)
ED25519
| 项目 |
说明 |
| 私钥文件名 |
id_ed25519 |
| 公钥文件名 |
id_ed25519.pub |
| 算法 |
Edwards25519 椭圆曲线签名 |
| 优点 |
密钥短、运算快、抗攻击强、安全性固定高位 |
| 缺点 |
OpenSSH 6.5 以下旧服务器不支持 |
RSA
1
2
|
# 默认 2048 位(ssh-keygen 不加参数就是这个)
ssh-keygen -t rsa
|
1
2
|
# 4096 位高安全版(生产推荐)
ssh-keygen -t rsa -b 4096
|
| 项目 |
说明 |
| 私钥文件名 |
id_rsa |
| 公钥文件名 |
id_rsa.pub |
| 算法 |
RSA 大整数分解非对称加密 |
| 优点 |
兼容性天花板,老旧设备、嵌入式、交换机全支持 |
| 缺点 |
密钥体积大、加解密速度慢,2048 位安全强度偏低 |
ECDSA
1
|
ssh-keygen -t ecdsa -b 256
|
1
|
ssh-keygen -t ecdsa -b 384
|
1
|
ssh-keygen -t ecdsa -b 521
|
| 项目 |
说明 |
| 私钥文件名 |
id_ecdsa |
| 公钥文件名 |
id_ecdsa.pub |
| 算法 |
NIST P-256 / P-384 / P-521 椭圆曲线 |
| 优点 |
比 RSA 速度快,老系统兼容比 ED25519 好一点 |
| 缺点 |
相比 ED25519 无优势,极少场景使用 |
第二步:上传公钥到服务器
生成完后,把公钥上传到 Linux 服务器上
1. 查看公钥内容
1
2
|
# Windows PowerShell / CMD
type %USERPROFILE%\.ssh\<公钥文件名.pub>
|
1
2
|
# Git Bash
cat ~/.ssh/<公钥文件名.pub>
|
复制输出的完整公钥字符串。
2. 密码登录服务器
1
2
3
4
5
|
# 标准 22 端口
ssh <用户名>@<服务器IP>
# 指定端口
ssh -p <端口号> <用户名>@<服务器IP>
|
3. 在服务器上配置公钥
1
2
3
4
5
6
7
8
9
10
11
12
|
# 查看是否已有 .ssh 目录
ls -la ~/ | grep ssh
# 不存在则创建
mkdir -p ~/.ssh
# 追加公钥到 authorized_keys
echo "粘贴你复制的完整公钥字符串" >> ~/.ssh/authorized_keys
# 设置权限(如果自带.ssh目录则不需要下方的操作)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
|
⚠️ 权限必须正确,否则 SSH 会拒绝使用密钥。.ssh 目录必须是 700,authorized_keys 文件必须是 600。
第三步:密钥登录
回到 Windows,直接 SSH 连接,无需密码:
搞定,以后不用每次输密码登录了。
第一次写文章 文笔可能不是那么的好😵