1. 背景知识#
默认情况下,SSH 登录需要输入用户名和密码,更安全的方式是使用密钥对(公钥 + 私钥)进行登录
- 私钥 (private key):存放在客户端(你的电脑)上,不可泄露。
- 公钥 (public key):存放在服务器上,用来验证对应的私钥。
最常用的密钥类型是RSA (Rivest–Shamir–Adleman)
- 最经典的非对称加密算法,历史最悠久。
- 默认支持大多数 SSH 客户端和服务器。
- 安全性依赖密钥长度,一般推荐至少 2048 位,现在常用 4096 位。
2. 使用流程#
1
2
3
4
5
|
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# -t rsa → 指定算法为 RSA
# -b 4096 → 设置密钥长度,推荐 4096。
# -C → 注释(通常写邮箱或设备名,方便区分)
|
1)在出现下述提示时,设置key的保存全路径(包括name)。如果直接回车,就会设置为括号内默认的值。
1
|
Enter file in which to save the key (/home/you/.ssh/id_rsa):
|
2)然后再输入下述提示时,可以进一步设置私钥密码,保证即使私钥文件泄露,也需要密码才能用。
1
|
Enter passphrase (empty for no passphrase):
|
3)如上操作后,最终会得到两个文件,例如
1
2
|
~/.ssh/id_rsa # 私钥(不要泄露)
~/.ssh/id_rsa.pub # 公钥(可以随意分享给服务器)
|
以window为例,对于私钥文件一般放在C:\Users\user\.ssh\id_rsa
位置
而对于公钥文件id_rsa.pub
,需要将其内容放(追加)到 ~/.ssh/authorized_keys
文件中。具体方式有如下:
authorized_keys 可以储存多个密钥对的公钥信息,即通过多个密钥对登录。
1)使用ssh-copy-id
直接自动追加
1
|
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
|
2)手动逐步操作
1
2
3
4
5
6
7
8
9
10
11
12
|
# 1. 首先将id_rsa.pub内容,上传到服务器的任一目录,例如 /tmp/id_rsa.pub
cat /tmp/id_rsa.pub
# 2. 如果事先不存在 .ssh 目录
ssh user@server_ip
mkdir -p ~/.ssh
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
|
1
2
3
4
5
6
7
8
9
|
ssh -i ~/.ssh/serverA_rsa user@server_ip # -i 参数
# or 编辑好config文件 (大写为参数名,小写为参数值)
Host myserver
HostName server_ip
User user
IdentityFile ~/.ssh/serverA_rsa
ssh myserver
|