内容纲要
在远程管理 VPS 时,SSH 登录的安全性至关重要。尽管密码登录简单易用,但它面临着暴力破解、弱密码泄露等多种安全隐患。相比之下,密钥登录则通过加密密钥对提供更高的安全性,有效抵御常见攻击,是更推荐的登录方式。
TIPS. 使用密钥登入只会改变ssh登入方式,在vps使用sudo时让你输的密码还是之前的密码。
开始
生成密钥对
首先在VPS上制作密钥对。(只要是类Unix系统的就行)
#在本地终端(Linux 或 macOS)或使用 Git Bash(Windows)生成 SSH 密钥对:
root@Jinqian:~ ssh-keygen #建立密钥对
enerating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #按Enter
Enter passphrase (empty for no passphrase): #输入密钥锁码
Enter same passphrase again: #再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. #私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. #公钥
The key fingerprint is:
SHA256:***
The key's randomart image is:
+---[RSA 3072]----+
****
+----[SHA256]-----+
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。
现在,在 root 用户的主目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。
安装公钥
- 如果你是在本地系统创建的密钥,使用sftp等工具把 id_rsa.pub (公钥)上传到服务器用户的主目录。
-
如果你是在当前服务器上创建的密钥,使用mv命令把 id_rsa.pub (公钥)移动到服务器用户的主目录。
mv .ssh/id_rsa.pub ~/ #输入以下命令,在服务器上安装公钥 cat id_rsa.pub >> .ssh/authorized_keys #配置权限 chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
PubkeyAuthentication yes
留意 root 用户能否通过 SSH 登录
PermitRootLogin yes
保存,重启 SSH 服务
/etc/init.d/ssh restart
进一步加强安全性
禁用密码登录
nano /etc/ssh/sshd_config
找到并修改以下参数
PasswordAuthentication no
保存并退出,然后重启 SSH 服务
/etc/init.d/ssh restart
修改默认 SSH 端口
更改 SSH 的默认端口(22),以降低被扫描的风险。
在 /etc/ssh/sshd_config 文件中,找到 Port 参数并设置为非标准端口(例如 2222)Port 2222
保存并退出,然后重启 SSH 服务
/etc/init.d/ssh restart