• 注册
  • 后端开发博客 后端开发博客 关注:0 内容:2417

    【Linux技术专题系列】「必备基础知识」一起探索(SSH体系下的公私密钥的介绍和使用技巧)

  • 查看作者
  • 打赏作者
  • 当前位置: 职业司 > 后端开发 > 后端开发博客 > 正文
    • 后端开发博客
    • SSH下authorized_keys, id_rsa, id_rsa.pub, known_hosts作用

      known_hosts

      原因

      有以下两个解决方案:
      1. 手动删除修改known_hosts里面的内容;
      2. 修改配置文件“~/.ssh/config”,加上这两行,重启服务器。
      StrictHostKeyChecking no
      UserKnownHostsFile /dev/null
      

      优缺点

      1. 需要每次手动删除文件内容,一些自动化脚本的无法运行(在SSH登陆时失败),但是安全性高;
      2. SSH登陆时会忽略known_hosts的访问,但是安全性低;

      id_rsa、id_rsa.pub

      • 公钥其实就是:id_rsa.pub:我们的客户端公钥上传到服务器,然后再把这个客户端公钥添加到authorized_keys。
      • 添加公钥后,服务器就会认为你这个客户端为可信任。你则可以访问这个服务器了。但是必须要有私钥

      获取id_rsa.pub

      下面来讲解如何在Linux服务器上制作密钥对,将公钥添加给账户,设置SSH,最后通过客户端登录。

      制作密钥对

      首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:

      [root@host ~]# ssh-keygen  <== 建立密钥对
      Generating public/private rsa key pair.
      Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
      Created directory '/root/.ssh'.
      Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
      Enter same passphrase again: <== 再输入一遍密钥锁码
      Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
      Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
      The key fingerprint is:
      0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
      

      密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。

      在服务器上安装公钥

      键入以下命令,在服务器上安装公钥:

      [root@host ~]# cd .ssh
      [root@host .ssh]# cat id_rsa.pub >> authorized_keys
      

      如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

      [root@host .ssh]# chmod 600 authorized_keys
      [root@host .ssh]# chmod 700 ~/.ssh
      
      1. 设置SSH,打开密钥登录功能
      cp /etc/ssh/sshd_config sshd_config_bk} #备份配置文件
      sed -i 's@#Port 22@Port 22@' /etc/ssh/sshd_config #保证原来22端口可以
      vi /etc/ssh/sshd_config
      
      RSAAuthentication yes
      PubkeyAuthentication yes
      
      PermitRootLogin yes
      
      PasswordAuthentication no
      
      [root@host .ssh]# service sshd restart
      

      authorized_keys

      案例分析

      • A 服务器(192.168.10.11)为客户机器
      • B 服务器(192.168.20.10)为目标机
      要达到的目的:
      • A机器ssh登录B机器无需输入密码;加密方式选 rsa|dsa均可以,默认dsa

      • 单向登陆的操作过程(能满足上边的目的):

        1. 登录A机器
        2. ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
        3. 将 id_dsa.pub 文件复制到B机器的root或者home下面用户的.ssh目录, 并·cat id_dsa.pub >> ~/.ssh/authorized_keys·
        4. 大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )
      双向登陆的操作过程:
      1. ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:

      2. 两个节点都执行操作:#ssh-keygen -t rsa,然后全部回车,采用默认值.

      3. 这样生成了一对密钥,存放在用户目录的~/.ssh下。

      4. 将公钥考到对方机器的用户目录下,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。

      请登录之后再进行评论

      登录

      手机阅读天地(APP)

      • 微信公众号
      • 微信小程序
      • 安卓APP
      手机浏览,惊喜多多
      匿名树洞,说我想说!
      问答悬赏,VIP可见!
      密码可见,回复可见!
      即时聊天、群聊互动!
      宠物孵化,赠送礼物!
      动态像框,专属头衔!
      挑战/抽奖,金币送不停!
      赶紧体会下,不会让你失望!
    • 实时动态
    • 签到
    • 做任务
    • 发表内容
    • 偏好设置
    • 到底部
    • 帖子间隔 侧栏位置:
    • 还没有账号?点这里立即注册