0、概述
在服务器安全系列里,我就强调过,如果要使用root
账号登录,强烈建议使用密钥而不是密码。这样有一个好处是,可以规避密码被暴力破解的风险,而且可以封禁所有密码错误的IP,因为我自己根本就不使用密码登录。
1、生成密钥对
执行:
1 | # 确保存在.ssh目录 mkdir ~/.ssh # 新建密钥对 ssh-keygen -t rsa |
其中rsa
为密钥加密算法,支持dsa
、ecdsa
、ecdsa-sk
、ed25519
、ed25519-sk
、rsa
。
宝塔建议使用ED25519
,但是我建议无论使用哪个,都要再生成至少一个RSA
密钥,因为非常多的平台不支持非RSA密钥,例如宝塔自己的堡塔云控平台。
需要输入密钥保存位置和密码:
1 | $ 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
,如果已存在,会提示:
1 | /root/.ssh/id_rsa already exists. Overwrite (y/n)? |
此时,不建议覆盖,否则可能影响已存在的服务。应该输入n
退出,然后更换文件名,比如/root/.ssh/id_rsa_2
。
留空表示没有密码,否则,每次使用密钥登录时需要再次输入设置的密码。
完成后,在/root/.ssh/
下可以看到出现了两个文件,一个是私钥,带有.pub
后缀的是公钥。
假设公钥为/root/.ssh/id_rsa.pub
,则使用:
1 | # 确保authorized_keys存在 touch /root/.ssh/authorized_keys # 追加到文件末尾 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys |
然后下载id_rsa
,即可通过此密钥登录。
评论