#基于SSH的安全远程登录 ##1.SSH的用户远程登录认证方式
-
第一种是用户密码远程登录
- 客户端发起ssh请求,服务器会把自己的公钥发送给用户
- 用户会根据服务器发来的公钥对密码进行加密
- 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
-
第二种是基于密钥key远程登录
- 首先在客户端生成一对密钥(ssh-keygen)
- 并将客户端的公钥ssh-copy-id 拷贝到服务端
- 当客户端再次发送一个连接请求,包括ip、用户名
- 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:13579
- 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
- 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
- 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
2.SSH基于用户密码远程登录实现过程
- 当用户使用ssh客户端第一次远程连接ssh服务器的时候会获取ssh服务器的公钥,当成功连接时,会在当前用户家目录下创建一个.ssh的隐藏文件夹并创建名叫known_hosts文件,里面保存着远程连接的SSH服务器的公钥。
- 创建的.ssh目录路径
[root@centos7 .ssh]# pwd
/root/.ssh
- 生成的公钥文件
[root@centos7 .ssh]# ls
known_hosts
- 第一次连接获取的MD5数值就是通过公钥加密而获得
[root@centos7 .ssh]# ssh root@192.168.32.129
The authenticity of host '192.168.32.129 (192.168.32.129)' can't be established.
RSA key fingerprint is SHA256:Z9E+n2nzRstV84EoUduaYhIs1hbq2Upo5jjPzvj8xxY.
RSA key fingerprint is MD5:ff:6a:95:9a:31:d3:e2:52:6d:ac:54:d9:b5:af:33:57.
-
通过以下步骤我们可以算出MD5的值。
- 目标机器**/etc/ssh/**目录下存放着ssh_host_rsa_key.pub公钥文件和ssh_host_rsa_key私钥文件
[root@centos6 ssh]# ls moduli sshd_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub ssh_config ssh_host_dsa_key ssh_host_key ssh_host_rsa_key
- 将ssh_host_rsa_key 文件内的公钥提取出来base64进行解密然后将结果输出到文件内
[root@centos6 ssh]# base64 -d ssh_host_rsa_key.pub.txt> key.pub.txt
- 最后通过md5sum 计算出上面显示的MD5值来,当下次连接时不能匹配将拒绝连接
[root@centos6 ssh]# md5sum key.pub.txt
ff6a959a31d3e2526dac54d9b5af3357 key.pub.txt
3. 基于密钥key的安全免密登录实现过程
- 首先生成密钥对,生成的密钥对会默认放在当前用户的家目录的*.ssh/* 目录下
[root@centos7 ~]# ssh-keygen #生成私钥,加上-t可以指定算法
Generating public/private rsa key pair.
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 /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9jKgeXGAQu1G77IXfYd0HEwNWRxi9L50nsuf63wF+Nk root@centos7.zk
The key's randomart image is:
+---[RSA 2048]----+
| .. +**o. ********|
| . o. .+oo |
| .o... . o. |
| .o .. . +.. |
| . .o.S. o .o+.|
| .oo=..o ..o+E|
| oo..o... ..o|
| ... o o +|
| . .B=|
+----[SHA256]-----+
- 生成密钥对后将公钥放入要连接的主机服务器上,公钥默认存放在要连接的用户家目录.sh/authorized_keys文件里
[root@centos7 .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.32.129
- 以上步骤做完后就可以实现基于密钥key的安全免密登录
[root@centos7 .ssh]# ssh root@192.168.32.129
Last login: Thu Apr 18 10:58:05 2019 from 192.168.32.128