一、前言:
ssh远程登录密码认证的方式有三种,password、Keyboard Interactive、Public Key前面两种方式就是密码认证,含义都是一样大同小异。
第三种是登录方式最安全的一种。下面我们就来实现第三种方式public key秘钥认证方式。
二、原理:
ssh客户端利用服务端发过来的私钥,进行登录的认证,认证服务端的公钥。从来实现安全的访问。
三、准备:
服务端系统:ubuntu
四、服务端生成秘钥
ssh-keygen -b 1024 -t dsa
接下来直接Enter
生成的路径:/root/.ssh/
-rw-r--r--. 1 root root 668 Aug 1 05:27 id_dsa
-rw-r--r--. 1 root root 616 Aug 1 05:05 id_dsa.pub
修改权限:
chmod 700 .ssh/
chmod 600 ~/.ssh/id_dsa
chmod 644 ~/.ssh/id_dsa.pub
生成认证秘钥:
cd .ssh/
cat id_dsa.pub >> authorized_keys
-rw-r--r--. 1 root root 616 Aug 1 05:27 authorized_keys
-rw-r--r--. 1 root root 668 Aug 1 05:27 id_dsa
-rw-r--r--. 1 root root 616 Aug 1 05:05 id_dsa.pub
五、更改sshd的配置文件
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes #开启密钥认证
AuthorizedKeysFile .ssh/authorized_keys #设置认证密钥路径
PasswordAuthentication no #禁用密码认证
保存退出
六、将私钥发送给客户端,重启sshd服务
systemctl restart sshd #可能不生效
service ssh restart #可用service ssh reload替代
七、使用xshell远程登录
ssh 地址--->输入用户名--->选择public key导入证书--->即可登录
选择浏览文件,选择私钥即可
八、使用winscp远程登录
新建站点,选择SFTP,输入主机名,用户名,高级选择SSH验证,密钥文件选择dsa或者rsa私钥文件,自动转成puTTY私钥文件
九、使用xshell生成密钥
如果有用xshell,可以选择Public Key登录-浏览-用户密钥-生成,保存公钥,上传到.ssh目录,
使用如下命令cat id_dsa.pub >> authorized_keys来设置验证的公钥,xshell端使用私钥来验证登录。
私钥也可以导出给其它人使用。
本文是参考网络文章,结合本人实践经验所得,欢迎大家转载分享。