Wind Floc. - key
type: channel
link: https://www.wfloc.com/tag/key/
items: Linux VPS使用SSH密钥登录并禁止密码方式登录

Linux VPS使用SSH密钥登录并禁止密码方式登录
type: item
date: 2020-06-06T17:58:00+08:00
description: 确保当前登陆账号为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的密钥验证登录方式!> 以上操作完成后，最好先尝试使用密钥文件（id_rsa）登录，确认无误再修改为仅密钥登录确认无误后，再重新编辑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服务，执行完毕即可使用密钥进行登陆