我们一般使用 VSCode 、MobaXterm、PuTTY等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。但是即使是将端口设置为22之外的端口也容易泄露。为了保证服务器安全,此时希望使用密钥方式登录。而且使用秘钥登录能够避免每次登录时反复输入账户密码。
密钥形式登录的原理是:利用密钥生成器制作一对密钥——公钥和私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到服务器。
制作密钥对
使用Ubuntu命令
ssh-keygen
第一步是保存密钥位置
第二步是为秘钥设置一个密码:如果输入的话以为只即使被人有你的秘钥没有你的密码也是无法登录你的服务器的这样会比较保险但也比较繁琐,直接回车表示不设置密码;
第三步是确认密码,如果没有设置的话可以直接回车。后面的信息是给出秘钥保存的位置 和秘钥信息。
最终我们可以看到在 /home目录下的 time目录中生成了一个隐藏目录 .ssh。里面包含两个密钥文件,id_rsa 为私钥,id_rsa.pub 为公钥。
使用Mobaxterm生成密钥
对,没看错,进度条旁边移动鼠标来增加随机性,加速生成密钥
从上到下分别是:公钥、密码(可以没有)、确认密码(可以没有)、保存私钥
我们保存好公钥、密钥打死都不给
Ubuntu 开启密钥登录
将公钥拷贝放到 /root/(可能有用户名)/.ssh/下,并改名为 authorized_keys
赋予权限
chmod 600 authorized_keys
chmod 700 ~/.ssh
配置SSH,打开秘钥登录功能
sudo vim /etc/ssh/sshd_config
# 开启密钥登录
RSAAuthentication yes
PubkeyAuthentication yes#root 用户能否通过 SSH 登录
PermitRootLogin yes
验证密钥可以登录后再增加这个,留一条后路
# 禁用密码登录
PasswordAuthentication no
重启 SSH 服务
service sshd restart
使用Mobaxterm连接
这个文件指定私钥文件
同样的 在pycharm这样连接