美文网首页
【Linux 网络】【SSH】密钥对验证

【Linux 网络】【SSH】密钥对验证

作者: yscyber | 来源:发表于2021-03-29 03:50 被阅读0次

    1、概念

    • 在基于 SSH 建立连接时使用密钥对验证,可以省去输入密码的步骤(即“免密登录”),同时也避免因密码泄漏等问题导致出现安全问题。

    • 最终的验证的机制是,将本地的私钥与远程的公钥进行配对,配对成功即可。

    2、详细

    • 进行密钥对验证,需要先进行一些准备:
    密钥对验证的准备

    对上图的补充:

    1、注意区别,普通的 SSH 登录即验证密码登录,是本地需要保存远程的公钥,而密钥对验证,是远程需要保存本地的公钥。
    2、远程保存公钥的文件(公钥库文件)的路径是由远程的系统中的/etc/ssh/sshd_config这一配置文件中的AuthorizedKeysFile配置的,当然,一般也无需更改。
    3、远程保存公钥的文件(公钥库文件)各个用户之间不是共享。比如,A 希望以密钥对验证的方式远程登录 B,B 中有两个用户,一个是 abc 另一个是 xyz,当 A 生成密钥对中的公钥仅被写入到/home/abc/.ssh/authorized_keys中的时候,A 只能以 abc 的身份进行免密登录,而不能以 xyz 的身份进行免密登录,除非 A 生成的密钥对中的公钥也写入了/home/xyz/.ssh/authorized_keys中。
    4、最终,只需要确保本地的私钥安全即可。

    3、本地:生成密钥对

    • 先在本地生成密钥对,使用ssh-keygen命令。

    • ssh-keygen命令有一个选项-t,用来指定密钥对的生成算法,比如说,RSA等。

    • 生成的密钥对的命名、保存位置采用默认的即可,一般无需变动。默认的保存位置是~/.ssh目录下,即哪一个用户使用的ssh-keygen命令,密钥对就保存在其家目录下的.ssh目录中。

    • 默认生成的私钥的名称是id_xxx,公钥的名称是id_xxx.pub,其中xxx为生成密钥对的算法。

    • 在生成密钥对的时候,会提示输入一个密码,这个一般不需要,直接敲击回车,密码为空即可。

    ssh-keygen 生成密钥对

    4、本地:将生成的公钥提交给远程

    • 这个方法有很多,比如说使用scp命令、使用一些文件传输工具等。

    5、远程:将公钥写入其的公钥库文件

    • 注意,远程上一开始可能没有公钥库文件,这个时候可以手动创建,在创建的时候要注意,文件的所在路径以及文件名都必须与本机上的/etc/ssh/sshd_config这个配置文件中的完全一致。

    • 采用cat命令加输出重定向>>,将公钥以追加的方式写入公钥库文件。

    • 如果是新创建的公钥库文件,务必更改权限为600,即rw-------,确保安全。

    • 修改远程上的 SSH 服务端配置文件,即/etc/ssh/sshd_config,将其中的PubkeyAuthenticationyes。根据实际情况进行,如果默认生效则无需修改,如若修改,修改后重启 SSH 服务即service sshd restart

    6、其他

    • 一旦完成了密钥对验证成功配置,可以考虑将远程的/etc/ssh/sshd_config配置文件中的PasswordAuthentication修改为no,即不允许通过密码验证登录。

    相关文章

      网友评论

          本文标题:【Linux 网络】【SSH】密钥对验证

          本文链接:https://www.haomeiwen.com/subject/manphltx.html