确保当前登陆账号为root或是其他管理员账户
cd ~ && mkdir .ssh
#新建.ssh以存放密钥文件
chmod 700 .ssh && cd .ssh
#修改.ssh目录权限为700,并进入目录
ssh-keygen -t rsa -b 4096
#生成一对4096位的私钥与公钥
#Enter file in which to save the key (/root/.ssh/id_rsa):(回车)
#Enter passphrase (empty for no passphrase): (此处可输入你要的密钥密码,也可以不输)
#Enter same passphrase again: (重复一遍上面的密码)
#Your identification has been saved in id_rsa.
#Your public key has been saved in id_rsa.pub.
#-----------
cat id_rsa.pub > authorized_keys && chmod 600 authorized_keys
#把公钥文件复制成authorized_keys文件
cp -n /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
#这步是把原sshd配置备份为.bak,以防修改错误
nano /etc/ssh/sshd_config
#使用编辑器进入ssh的配置文件,调整参数(nano编辑器对小白更友好)
#查找并修改以下参数
#RSAAuthentication yes -> RSAAuthentication yes
PubkeyAuthentication yes -> PubkeyAuthentication yes //允许使用公钥验证登录
#找到上面这两个项,把各自行头的#去掉,如果行尾的值是no则改成yes
修改完毕后,退出nano编辑模式,Ctrl + X,按Y保存,再回车Enter确认
systemctl restart sshd
#重启sshd服务,以启用sshd的密钥验证登录方式
确认无误后,再重新编辑sshd_config,修改以下配置
PasswordAuthentication yes -> PasswordAuthentication no //禁止使用密码口令登录
#(把行头#去掉,如果没有就不用管)把yes改成no
修改完毕后,退出nano编辑模式,Ctrl + X,按Y保存,再回车Enter确认
一键修改sshd_config命令:
sed -i 's/^#RSAAuthentication.*/RSAAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/^#PubkeyAuthentication.*/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/^PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config
使用WinSCP之类的文件管理器,通过SFTP协议,输入账号密码登陆上去,链接到"/root/.ssh"目录,把目录内的3个文件全部拖到本地目录。
然后在WinSCP新建一个会话,窗口左下角“工具-运行PuTTYgen”,点击新的窗口的顶栏的“Conversions-Import key”,选择你刚刚保存的id_rsa文件(不带.pub后缀的),点Save private key,保存到你存放密钥的目录,保管好,这将是你唯一的登陆Linux的方式。
使用你的ssh管理软件,修改ssh的连接登录方式,选择 使用密钥验证,然后选择你刚刚保存的private.ppk文件,保存。
尝试一下登陆,如果提示登陆成功,即可以重启sshd服务以执行禁用密码登录、允许使用密钥登陆。
systemctl restart sshd
#重启sshd服务,执行完毕即可使用密钥进行登陆