Linux 主机云服务器使用密钥登录代替密码登录
1. 背景
Linux主机使用密码登录,容易被暴力破解,整天都有各类扫描端口,暴力破解等。
尤其是自己的VPS,就算更改了ssh的默认端口,仍然无法避免扫描、爆破。
更为安全的方式是使用ssh密钥登录,禁止密码登录。
以下文件部分内容参考自:https://www.shopee6.com/web/web-tutorial/ssh-login-key.html
2. 使用方式
- 在服务器生成公钥、私钥;
- 配置服务器ssd使用公钥,禁止密码登录;
- 下载私钥,使用私钥登录。
3. 主机生成公钥
先通过密码登录ssh后,输入如下命令后回车:ssh-keygen
直接生成SSH密钥,同时可以设置密钥锁码,也可以直接留空。
类似的命令生成过程参考如下:
[root@host ~]$ ssh-keygen <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
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:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
成功后就在root目录下生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。
4. 主机配置使用公钥
输入如下命令,分别回车
cd .ssh
cat id_rsa.pub >> authorized_keys
同时修改文件权限:
chmod 600 authorized_keys
chmod 700 ~/.ssh
编辑 /etc/ssh/sshd_config 文件,进行如下设置:vi /etc/ssh/sshd_config
将如下的功能开放,即注释掉#PubkeyAuthentication yes
确保root用户能登录PermitRootLogin yes
将密码登录禁用:PasswordAuthentication no
保存文件并退出。
5. 使用私钥登录
从服务器下载/root/.ssh/id_rsa文件,保存在本地,使用MobaXterm时,use private key中找到id_rsa文件,后续即可登录。
登录成功: