• SSH使用密钥免密码登录


    使用ssh远程连接服务器,有两种身份校验方式:账号密码和秘钥。使用秘钥的方式理论上更加安全,而且免去了输入密码的步骤,使用起来更方便(尤其对于sftp,scp等)。

    设置 SSH,打开密钥登录功能

    编辑 /etc/ssh/sshd_config 文件,进行如下设置:

    RSAAuthentication yes
    PubkeyAuthentication yes

    留意 root 用户能否通过 SSH 登录:

    PermitRootLogin yes

    当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

    PasswordAuthentication no

    最后,重启 SSH 服务:

    [root@host .ssh]$ service sshd restart
    1. 秘钥由谁生成
      这是比较容易搞乱的一点。这里以A、B两台服务器为例,假设A需要ssh登录B,那么应该由那台服务器生成秘钥呢。可能有人以为像门锁一样,主人家负责装锁配钥匙,把钥匙交给要开门的人使用,所以由被访问的B服务器生成秘钥。

      事实恰恰相反,秘钥由访问请求方A服务器生成,并把生成的公钥交给B导入;公钥可以在多台服务器导入,一台服务器导入了A的公钥,即意味着承认A的有访问自己权限,所以A可以用一套密钥登录多台服务器。

    2. 账号
      访问和被访问的服务,需要有相同的账号,而且密钥由该账号生成。

    3. 密钥生成
      在A服务器上执行命令:
      ssh-keygen -t [rsa|dsa]
      rsa和dsa是生成密钥常用的两种加密算法,其他可选算法还有ecdsa、rsa1等。
      命令执行过程需要用户输入的地方连续回车即可(enter passphrase的别输入,否则登录的时候还是得输入密钥密码)。
      执行成功后,在用户home目录下的.ssh子目录里会生成私钥文件和公钥文件:id_rsa,id_rsa.pub或id_dsa,id_dsa.pub。

    4. 公钥导入
      方法一:
      把公钥文件id_rsa.pub上传到B服务器,然后执行:
      cat id_rsa.pub >> ~/.ssh/authorized_keys
      将id_rsa.pub的内容,追加到文件~/.ssh/authorized_keys中

      方法二:
      在A服务器上使用命令cat ~/.ssh/id_rsa.pub查看公钥内容,将内容复制追加到B服务器的文件~/.ssh/authorized_keys中(请注意不要删除或覆盖该文件中已有的内容)。

    5. 修改权限
      A服务器上的.ssh和秘钥文件的权限在ssh-keygen生成时已设好,无须特别设置。B服务器上如果是首次添加authorized_keys,需要修改权限:
      chmod 600 authorized_keys
      设置authorized_keys权限

      chmod 700 -R .ssh
      设置.ssh目录权限

    6. 登录
      在A服务器上执行:
      ssh-add /id_rsa
      必须保证id_rsa文件的权限为600
      ssh ip/hostname(B服务器的ip或主机名)
      即可登录。
    7. 问题Could not open a connection to your authentication agent
      先执行  eval `ssh-agent`  (是~键上的那个`) 再执行 ssh-add ~/.ssh/rsa成功
  • 相关阅读:
    视频质量诊断之详解
    Leetcode 22.生成括号对数
    leetcode 19.删除链表的第n个节点
    Leetcode 11.盛最多水的容器
    Leetcode 6.Z字形变换
    Leetcode 4.两个排序数组的中位数
    Leetcode 3.无重复字符的最长子串
    Leetcode 1.两数之和
    RNN and Language modeling in TensorFlow
    Tensorflow word2vec+manage experiments
  • 原文地址:https://www.cnblogs.com/wangshuyi/p/6664799.html
Copyright © 2020-2023  润新知