SSH 生成密钥对

0、概述

服务器安全系列里,我就强调过,如果要使用root账号登录,强烈建议使用密钥而不是密码。这样有一个好处是,可以规避密码被暴力破解的风险,而且可以封禁所有密码错误的IP,因为我自己根本就不使用密码登录。

1、生成密钥对

执行:

Bash
1
2
3
4
# 确保存在.ssh目录
mkdir ~/.ssh
# 新建密钥对
ssh-keygen -t rsa

其中rsa为密钥加密算法,支持dsaecdsaecdsa-sked25519ed25519-skrsa

宝塔建议使用ED25519,但是我建议无论使用哪个,都要再生成至少一个RSA密钥,因为非常多的平台不支持非RSA密钥,例如宝塔自己的堡塔云控平台

需要输入密钥保存位置和密码:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):~/.ssh/id_rsa_2
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa_2
Your public key has been saved in /root/.ssh/id_rsa_2.pub
The key fingerprint is:
SHA256:2wxQFK0Y0AIfjUelIejxNNMV3Eco+oxjLg4 root@MyDemoServer
The key's randomart image is:
+---[RSA 3072]----+
|     o...oo.     |
| .  . o+.o..     |
|o    oo++..      |
|o.. *.=..        |
|.+ O =++S        |
|+.+ =++o.=       |
|+E .o==o. o      |
|o...             |
|  +++            |
+----[SHA256]-----+

默认为/root/.ssh/id_rsa/root/.ssh/id_rsa.pub,如果已存在,会提示:

Bash
1
2
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? 

此时,不建议覆盖,否则可能影响已存在的服务。应该输入n退出,然后更换文件名,比如/root/.ssh/id_rsa_2

留空表示没有密码,否则,每次使用密钥登录时需要再次输入设置的密码。

完成后,在/root/.ssh/下可以看到出现了两个文件,一个是私钥,带有.pub后缀的是公钥。

假设公钥为/root/.ssh/id_rsa.pub,则使用:

Bash
1
2
3
4
# 确保authorized_keys存在
touch /root/.ssh/authorized_keys
# 追加到文件末尾
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

然后下载id_rsa,即可通过此密钥登录。

文章作者
Hsukqi Lee
发布于

2023-01-15

修改于

2023-05-18

许可协议

CC BY-NC-ND 4.0

# Linux  CentOS  软件  Ubuntu  Debian  Deepin  SSH

评论

昵称
邮箱
网址
暂无