ssh是什么?

    允许实现对远程系统经验证地加密安全访问。

ssh的服务登录验证方式:

    用户/口令

    基于密钥

基于用户和口令登录验证:

    1、客户端发起ssh请求,服务器会把自己的公钥发送给用户

    2、用户会根据服务器发来的公钥对密码进行加密

    3、加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

基于密钥的登录方式:

    1、首先在客户端生成一对密钥(ssh-keygen)

    2、并将客户端的公钥ssh-copy-id 拷贝到服务端

    3、当客户端再次发送一个连接请求,包括ip、用户名

    4、服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:acdf

    5、服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

    6、得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

    7、服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

密钥登录的配置过程:

   1、在客户端生成密钥对

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

                -P---对私钥加密的口令,可以不指定

                -f----指定文件 默认家目录的.ssh下,隐藏文件

            wKioL1m4_qfxHxLpAAAjeZu6o2Q013.png

   2、把公钥文件传输至远程服务器对应用户的家目录,这样就可以直接登录 无需输入密码。

     wKiom1m4_2_w6RqWAAFTgAIdFiE468.png

    注意:如果在生成密钥对的时候-P 加入了密码,ssh连接的时候 需要输私钥的密码----------重设私钥口令:ssh-keygen -p

      如果你不想输入密码直接登录,可以托管 1、ssh-agent bash

                                                                    2、ssh-add              -----------仅生效一次退出需重新设置

SecureCRT基于密钥登录

    上面的配置过程是在linux之间基于key认证登录,但是在实际生产过程中,我们都是用虚拟客户端登录,其实这些客户端里也有这个功能,下面我们介绍一下。

    1、在SecureCRT菜单界面上找到Tools-->Create Public Key-->选择加密方式,默认是RSA-->输入加密密码-->选择加密长度,默认是2048-->生成后选择保存方式为OpenSSH Key format(new),选择保存路径。    

    2、生成公钥文件后通过rz上传至服务器

    3、把公钥文件追加到.ssh/authorized_keys文件中:cat Identity.pu >> .ssh/authorized_keys

     注意:1、如果生成过程中最后一步选择的是Standard Public Key and VanDyke Private Key format,需要执行下面这条命令进行转化

                 ssh-keygen-i-f Identity.pub >> .ssh/authorized_keys

                2、为了保证密钥的安全性,保证权限必须为600

    4、现在可以使用SecureCRT,在ssh2选项里去只勾选Publickey,双击就可以直接登录了。

    5、基于xshell前段时间被曝出有漏洞,这里推荐大家使用SecureCRT,xshell的实现方式基本与CRT相似。