SSH服务登录验证

ssh服务登录验证有两种方式:html

  1.基于用户名和密码shell

  2.基于密钥centos

 

基于用户名和密码验证过程:

  1)客户端想ssh服务器发起请求,服务器会把本身的公钥发送给客户端,bash

  2)客户端用服务器的公钥加密本身的密码,并发送给服务器服务器

  3)服务器用本身的私钥解密获得客户端的密码并验证,若是密码正确则登录成功.并发

 

基于秘钥验证过程:

  1)客户端生成一对秘钥ssh

  2)客户端把本身的公钥传送给服务器ide

  3)客户端发送一个链接请求,信息包括ip和用户名测试

  4)服务器去authorized_keys文件中查找相应记录,若是有,就生成一个随机字符串ui

  5)服务器使用客户端的公钥把随机字符串加密后发送给客户端

  6)客户端使用私钥解密,再把获得的字符串发给服务器

  7)服务器对比此字符串是否与本身生成的字符串一致,若是一致就容许登录

 

基于秘钥认证示例:

两台主机之间:

  1)客户端生成一对秘钥

  命令格式

  ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]

    -p 口令,可为空

    -f 指定秘钥存放路径

  也能够全部参数省略直接执行ssh-keygen

  ]# ssh-keygen

clip_image001

  执行后三次回车.会生成未加密的私钥/root/.ssh/id_rsa和公钥/root/.ssh/id_rsa.pub

 

  2)把公钥文件传输至远程服务器对应用户的家目录,若是写错成私钥文件名,不用担忧,传过去的依然是公钥.

  命令格式

    ssh-copy-id [-i [identity_file]] [user@]host

]# ssh-copy-id -i .ssh/id_rsa.pub root@172.18.7.77
root@172.18.7.77's password: 
Now try logging into the machine, with "ssh 'root@172.18.7.77'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

 

 

3)在服务器端查看/root/.ssh/

]# cat /root/.ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAusWy2QOYUC5kuwG+lNO7mWqWO/lvyqhAB1jiEcpAlns//kxVkifRtfDrA0+u7Pi+/eenW/6g1ZA6iP1muyprNXa+F84QjAaIBVlJuizKzF1iVFDOULdbyVRkKxx5Z8rlmG8WPeDl/1q9yIRrjUD84am8FOHsT/tzFLbEoeKL8vd/F6V1FPqlI+DLO28LgQ/b1Q21lJRk/XB6YvmFain9qwlzB0VF4vKVAhwVRmzA6hCxS7zohIJe8Y+1pC654mKwERtaM6PBUYPr/l0iznfU5Dxsvr4d8hp9xe2tDkyi7xkS0wd0DOE7SGbgwqUKxh7iuA+qBdln2h8dtC0dqGPlaw== root@centos6.qt

说明已经传输成功

 

4)测试

  在客户端直接执行

]# ssh 172.18.7.77
Last login: Thu Jan 4 21:45:22 2018 from 172.18.7.61

  便可免密码直接登录,不输用户名默认以当前登录用户身份尝试登录.

  使用Xshell或SecureCRT之类的客户端软件实现基于秘钥登录的原理与上文相同,只要经过客户端软件生成一个公钥,并复制到服务器中,将公钥内容追加到 ~/.ssh/authorized_keys中

  以后新建一个以秘钥方式登录的会话,则能够免密码直接登录.

相关文章
相关标签/搜索