1. 背景知识

默认情况下,SSH 登录需要输入用户名和密码,更安全的方式是使用密钥对(公钥 + 私钥)进行登录

  • 私钥 (private key):存放在客户端(你的电脑)上,不可泄露。
  • 公钥 (public key):存放在服务器上,用来验证对应的私钥。

最常用的密钥类型是RSA (Rivest–Shamir–Adleman)

  • 最经典的非对称加密算法,历史最悠久。
  • 默认支持大多数 SSH 客户端和服务器。
  • 安全性依赖密钥长度,一般推荐至少 2048 位,现在常用 4096 位。

2. 使用流程

  • (1)在本地电脑客户端生成RSA密钥对
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  # 公钥(可以随意分享给服务器)
  • (2)放置密钥对文件

以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
  • (3)密钥登录
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