Linux配置免密登录ssh

密钥生成到免密配置

前言

由于本人主要使用的为Windows 所以本教程均是以Windows环境下的操作
其实Linux也是同理

第一步:生成密钥对

1
ssh-keygen

不加任何参数,Windows 下默认:

  • 算法:RSA
  • 密钥长度:2048 位
  • 保存路径C:\Users\用户名\.ssh\id_rsa
  • 私钥id_rsa
  • 公钥id_rsa.pub

本人一般懒得加参数,直接一把梭。当然如果你有特殊需求,下面列了几种常用算法。


常用密钥算法对比

(奇怪的知识又增加了,在没有上网搜之前都不知道有这么多种算法)

ED25519

1
ssh-keygen -t 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 目录必须是 700authorized_keys 文件必须是 600


第三步:密钥登录

回到 Windows,直接 SSH 连接,无需密码:

1
ssh <用户名>@<服务器IP>

搞定,以后不用每次输密码登录了。
第一次写文章 文笔可能不是那么的好😵

最后更新于 2026-07-31 20:11