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下,隐藏文件
2、把公钥文件传输至远程服务器对应用户的家目录,这样就可以直接登录 无需输入密码。
注意:如果在生成密钥对的时候-P 加入了密码,ssh连接的时候 需要输私钥的密码----------重设私钥口令:ssh-keygen -p
如果你不想输入密码直接登录,可以托管 1、ssh-agentbash
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相似。