what?什么是密钥对验证的SSH体系?

SSH支持两种验证方法,一种是用户身份验证另一种是密钥对验证,本文主要讲解如何实现密钥对验证。


why?使用密钥对验证的好处?

密钥对验证更加安全,并且可以免交互。使用起来更加安全、便捷。


where?应用在哪里?

可应用于OpenSSH,实现更加安全、免交互的远程登录、拷贝、复制等操作。


how?如何实现?

下图为在Linux服务器、客户机中构建密钥对验证SSH体系的基本过程。

wKioL1bi0eqR0usTAAE1dwJqT5g376.jpg


一,在客户端创建秘钥对

       在linux客户机中,通过ssh-keygen工具创建秘钥对文件,可用的加密算法为RSA或DSA。

    命令格式:ssh-keygen -t 算法        //默认是RSA算法

wKioL1bi14CAg2O1AADnq_IjpFw156.jpg

    上述过程中一般按enter键即可,如果需要设置秘钥短语可以根据提示输入,私钥短语用来保护私钥文件,当使用该私钥进行验证的时候需要使用短语进行验证。

wKiom1bi12mSLUAGAABKG0YTId8204.jpg

注意!私钥文件(id_rsa)的默认权限为600,公钥文件(id_rsa.pub)的默认为644,私钥文件的权限不要进行修改,不要将私钥泄露给任何人!


二,将公钥文件上传至服务器

    使用scp 命令将公钥文件上传到远程服务器的opt目录下(目录的位置随便)

wKioL1bi2kTBOQ-vAAC0dhiMC6A338.jpg


三,在服务器端导入公钥

    在服务器中,目标用户(用于远程登录的账户lisi)的公钥位于~/.ssh目录,默认的文件名是authorized_keys。当获得客户机发送过来的公钥文件后,可以通过重定向将公钥文件内容追加到目标用户的公钥数据库中。

wKiom1bi3l2y-UnrAADQL6s8mrU247.jpg

    在公钥数据库authorized_keys文件中,最关键的内容是"ssh-rsa"加密字串部分,当导入非ssh-keygen工具创建的公钥文本时应确保此部分信息完整,最后的zhangsan@ys是注释信息(可有可无)

    注意!这个文件同组或者是其他用户对该文件不能有写入的权限。还应该确保服务器支持秘钥对验证的方式,可参考上一篇如何在sshd_config中开启密钥对认证功能。

wKiom1bi4kmQzNGEAAAnfN5JKSs570.jpg


四,在客户端使用秘钥对验证wKioL1bi5ITijhPVAABJGvW8334361.jpg