一、SSH公钥登录原理
在平时工作中我们经常要远程登录服务器,这就要用到SSH协议:
主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录
密码口令登录
通过密码进行登录,主要流程为:
1、客户端连接上服务器之后,服务器把自己的公钥传给客户端
2、客户端输入服务器密码通过公钥加密之后传给服务器
3、服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录
公钥登录
公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:
1、客户端生成RSA公钥和私钥
2、客户端将自己的公钥存放到服务器
3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端
4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。
二、服务器端生产密钥(一直默认回车就好,当然你也可以重新命名):
[root@localhost ~]# ssh-keygen -t rsa
然后会在 root目录下自动生产.ssh目录和公钥(id_rsa.pub)私钥(id_rsa)
[root@localhost ~]# cd /root/.ssh
新建一个公钥文件,设置权限为600
[root@localhost .ssh]# touch authorized_keys
[root@localhost .ssh]# chmod 600 authorized_keys
将公钥拷贝到authorized_keys
[root@localhost .ssh]# cat id_rsa.pub >> authorized_keys
修改配置
[root@localhost /]# vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启服务(只有root有权限)
[root@localhost /]# service sshd restart
将私钥id_rsa拷贝到我们的本地使用密钥连接(可以使用xshell ,WinSCP)
到现在,可以用密钥登录,但是密码还是能登录,所以要去掉密码登录。
[root@localhost /]# vi /etc/ssh/sshd_config
PasswordAuthentication no
重启服务(只有root有权限)
[root@localhost /]# service sshd restart
转载于:https://blog.51cto.com/fuvip/2129326