我们新开一台 Linux 服务器时,一般使用密码登录。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会修改 SSH 的默认端口,从默认的 22 设置为其它的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。下面来讲解如何在 Linux 服务器上制作密钥对,将公钥添加给账户,设置 SSH ,最后通过客户端登录。
检查现有 SSH 密钥对
为防止覆盖现有密钥,需要对 ~/.ssh/
路径进行检查,可以使用以下命令来检查是否有密钥对:


如果有密钥对则需要注意备份,没有可直接进行下一步。
生成密钥对(公钥与私钥)
执行 ssh-keygen
命令,生成 id_rsa
和 id_rsa.pub
两个文件,id_rsa
是私钥,生成后需要保存下来,后面使用的密钥就是这个文件;id_rsa.pub
是公钥,密钥生成过程中可根据提示对密钥设置密码,设置密码可增加安全性,在使用密钥登录时需要输入,如不需要设置密码也可直接回车。
一路回车下来,密钥已经生成好了,此时我们再次查看~/.ssh/
路径下已经有公钥和私钥文件了:

在服务器上安装公钥
安装公钥需要一个叫authorized_keys
的文件,我们可以执行:
命令来创建,并为authorized_keys
设置文件权限:
此时我们只需将公钥追加到authorized_keys
中即可:
调整sshd配置
执行
主要调整以下参数(没有可自行添加,有的为注释状态,只需去掉前面的#
即可):
修改完成后,执行
重启 sshd
服务使修改生效
保存私钥到本地
我们可以使用 scp
来传输私钥,scp
的传输过程也是经过加密的,用法:
我们需要将服务器上的 id_rsa
传输到本地,只需要以管理员权限打开一个Windows终端,执行:
执行后需要输入密码,完成后私钥就保存在 D 盘了

使用私钥登录
我们将私钥放在C:\Users\用户名\.ssh
下,无需改名,打开一个Windows终端,执行
即可直接登录服务器啦
禁用密码登录
执行
调整以下参数:
保存后执行
重启 sshd
服务使更改生效。此时没有密钥再登录就会提示Permission denied
啦

本文地址: SSH 通过密钥登录