使用 Linux 服务器的时候,可以通过修改 SSH 端口并设置复杂的密码,以确保服务器安全。为了避免密码泄露风险,进一步提高安全性,我们还可以配置密钥登录并禁用密码登陆。因为每个密钥对都是独一无二的,且私钥可以设置高强度的加密保护(如设置密码保护私钥文件等),相比于密码可能存在的被猜测、撞库等情况,他人很难仿冒合法的密钥去登录 VPS,保障了只有持有正确私钥的授权用户才能访问服务器。
创建SSH密钥对
SSH 连接到需要配置密钥登录的服务器,执行如下命令创建密钥对:
ssh-keygen
输入密钥文件的保存路径,默认保存到 /root/.ssh/ 文件夹。
root@localhost:~# ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519):
输入密钥文件密码,如果不设置密码直接按两次回车:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
创建密钥对成功:
Your identification has been saved in /root/.ssh/id_ed25519
Your public key has been saved in /root/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:am2ZFI45UioInBR9s5dmztaccbYG4HLWzPaThh63vr4 root@localhost
The key's randomart image is:
+--[ED25519 256]--+
| oo |
|o .. o . |
|.o . = B |
|.. = % O o |
|. . o & S O o |
| . . O O O |
| + * = o |
| . . . . |
| oEo |
+----[SHA256]-----+
将生成的私钥下载到本地保存好,删除服务器上的私钥文件。注意一定保存好,特别提醒,如果设置了密码,密码也一定不能忘记。
服务器配置公钥
利用公钥文件创建登录需要的authorized_keys文件:
cd .ssh
# id_rsa.pub替换为刚刚生成的公钥文件名
cat id_rsa.pub >> authorized_keys
更改authorized_keys文件和目录的权限,600对应的是-rw——-,代表只有文件所有者具有读写权限。700对应的是-rwx——,代表文件或目录所有者有读写和执行权限。
chmod 600 authorized_keys
chmod 700 ~/.ssh
编辑ssh配置文件:
vi /etc/ssh/sshd_config
找到下面这一行(按/进入查找模式):
#PubkeyAuthentication yes
按Insert键进入编辑模式,去掉前面的井号:
PubkeyAuthentication yes
按Esc退出编辑模式,输入:wq退出保存。重启SSH服务使配置生效:
systemctl restart ssh
# 或
systemctl restart sshd
使用私钥进行SSH连接
这里以Windterm为例(其他SSH工具请看本站相关教程),使用私钥登录服务器,右击会话,选择『属性 – SSH – 验证』处,去掉已勾选的『尝试密码认证』,勾选尝试『尝试私钥认证』,并在『身份验证文件』处选择刚刚下载下来的私钥文件:
禁用SSH密码登录
同样编辑ssh配置文件:
vi /etc/ssh/sshd_config
找到下面这一行(按/进入查找模式):
#PasswordAuthentication yes
去掉 #
号,并将其中的 yes
改为 no
:
PasswordAuthentication no
重启 SSH 服务使其生效:
systemctl restart ssh
# 或
systemctl restart sshd