详解SSH秘钥对登录

客户端:Linux(ssh命令)或者Windows(ssh工具:Xshell,SecureCRT等)
服务器端:Linux

问题:如何保护服务器端的SSH服务:

  • 改端口号 /etc/ssh/sshd_config —>可以通过端口扫描工具破解
  • 在服务器端配置防火墙,只允许特定的IP远程登录 ------>管理不方便不灵活
  • 秘钥对登录,同时禁止使用密码登录**(推荐)**

SSH秘钥登录步骤:
1.在客户端创建秘钥对 :id_rsa 和 id_rsa.pub

ssh-keygen -t rsa      #生成秘钥对,rsa是加密算法

详解SSH秘钥对登录_第1张图片
详解SSH秘钥对登录_第2张图片

2.上传客户端的公钥 id_rsa.pub 给服务器端
利用scp命令
在这里插入图片描述

3.服务器端导入公钥信息到特定的文件:/root/.ssh/authorized.keys 我在实验中使用root用户,如果是其他用户,就换成对应用户的家目录下的.ssh/authorized.keys
服务器端:/root/目录下可能没有.ssh目录,可以自己创建 mkdir .ssh 我实验中是存在的,而且.ssh目录下的authorized.keys文件也存在,只不过里面是空的。
把/root/下的id_rsa.pub 附加重定向到authorized.keys文件中

cat id_rsa.pub >> .ssh/authorized.keys

可以看出这个公钥的权限只允许root用户查看,其他用户不能查看
详解SSH秘钥对登录_第3张图片

4.修改服务器端配置文件,使用秘钥对验证方式登录

vim /etc/ssh/sshd_config

打开秘钥验证登录方式
详解SSH秘钥对登录_第4张图片
在这里插入图片描述
同时把密码登录权限改为no,这样可以禁止远程使用密码登录

重启sshd服务

systemctl restart  sshd.service

详解SSH秘钥对登录_第5张图片
客户端远程登录,发现不需要密码就可以登录。

利用windows的软件也可以不用密码而使用秘钥对的方式登录,以Xshell6 为例

把客户端的那个id_rsa 私钥拷贝出来,放在桌面,
打开Xshell新建连接
详解SSH秘钥对登录_第6张图片
详解SSH秘钥对登录_第7张图片
通过浏览添加桌面的私钥文件即可。

你可能感兴趣的:(详解SSH秘钥对登录)