zoukankan      html  css  js  c++  java
  • Centos7 通过SSH使用密钥实现免密登录

    Centos7 通过SSH使用密钥实现免密登录

     
     
    Public Key认证的主要魅力在于认证时承诺不必提供密码就能够同远程系统建立连接。
    Public Key认证的基础在于一对密钥,public key和private key,public key对数据进行加密而且只能用于加密,private key 只能对所匹配的public key加密过的数据进行解密。
    我们把public key放在远程系统合适的位置,然后从本地开始进行ssh连接。
    此时,远程的sshd会产生一个随机数并用我们产生的public key进行加密后发给本地,本地会用private key进行解密并把这个随机数发回给远程系统。
    最后,远程系统的sshd会得出结论我们拥有匹配的private key允许我们登录。
    --------------------- 
    作者:Jinsx2015 
    来源:CSDN 
    原文:https://blog.csdn.net/axing2015/article/details/83754785 
    版权声明:本文为博主原创文章,转载请附上博文链接!
     

    一、serverA 免密登录 serverB 原理
    首先在 serverA 上生成一对秘钥(ssh-keygen)
    将公钥拷贝到 serverB,重命名 authorized_keys
    serverA 向 serverB 发送一个连接请求,信息包括用户名、ip
    serverB 接到请求,会从 authorized_keys 中查找,是否有相同的用户名、ip,如果有 serverB 会随机生成一个字符串
    然后使用使用公钥进行加密,再发送个 serverA
    serverA 接到 serverB 发来的信息后,会使用私钥进行解密,然后将解密后的字符串发送给 serverB
    serverB 接到 serverA 发来的信息后,会给先前生成的字符串进行比对,如果一直,则允许免密登录
    二、Centos7 默认安装了 ssh服务
    三、启动 ssh 服务

    1
    2
    3
    4
    5
    6
    # 查看 ssh 状态
    systemctl status sshd
    # 启动 ssh
    systemctl start sshd
    # 停止 ssh
    systemctl stop sshd

    四、serverA 生成秘钥,遇到提示直接敲回车即可

    CentOS7 默认使用RSA加密算法生成密钥对,保存在~/.ssh目录下的id_rsa(私钥)和id_rsa.pub(公钥)。也可以使用“-t DSA”参数指定为DSA算法,对应文件为id_dsa和id_dsa.pub,
    密钥对生成过程会提示输入私钥加密密码,可以直接回车不使用密码保护。
     
     1 [root@localhost ~]# ssh-keygen
     2 Generating public/private rsa key pair.
     3 Enter file in which to save the key (/root/.ssh/id_rsa):    
     4 Enter passphrase (empty for no passphrase): 
     5 Enter same passphrase again: 
     6 Your identification has been saved in /root/.ssh/id_rsa.
     7 Your public key has been saved in /root/.ssh/id_rsa.pub.
     8 The key fingerprint is:
     9 SHA256:/gGrlDJN5euMS5aai5feBkEI/0WjEnzPzx1xGtdkKG4 root@localhost.localdomain
    10 The key's randomart image is:
    11 +---[RSA 2048]----+
    12 |.o..  o      +o  |
    13 | .o.oo .  + +..  |
    14 |  oo.o. .. B     |
    15 |   o..oo  E      |
    16 |    ...oSo .     |
    17 |    .o +o+.      |
    18 |    ooB + .      |
    19 |   .oX.= . .     |
    20 |  .o=o=.o .      |
    21 +----[SHA256]-----+
    22 [root@localhost ~]# ls ~/.ssh/
    23 id_rsa  id_rsa.pub  known_hosts
    24 [root@localhost ~]# 
     

    五、解决找不到 .ssh 目录

    如果在上面生成秘钥后,执行 cd ~/.ssh 找不到 .ssh 目录,是因为没有使用 ssh 登录过,使用 ssh 登录一下即可生成 .ssh 目录,之后再重新执行 ssh-keygen 生成秘钥即可
     
     1 [root@localhost ~]# ssh localhost
     2 The authenticity of host 'localhost (::1)' can't be established.
     3 ECDSA key fingerprint is SHA256:DYd7538oOsqpIIDTs01C3G4S6PRE7msA91yUgk9Dzxk.
     4 ECDSA key fingerprint is MD5:88:80:21:03:b2:52:6b:06:ff:c7:3b:d5:2d:47:c9:ad.
     5 Are you sure you want to continue connecting (yes/no)? yes
     6 Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
     7 root@localhost's password: 
     8 Last login: Fri Oct 26 16:15:57 2018 from localhost
     9 [root@localhost ~]# ls ~/.ssh/
    10 known_hosts
    11 [root@localhost ~]# exit
    12 登出
    13 Connection to localhost closed.
    14 [root@localhost ~]# 
     

    六、移动 id_rsa.pub 文件

     
     1 # 将 serverA ~/.ssh目录中的 id_rsa.pub 这个文件拷贝到你要登录的 serverB 的~/.ssh目录中
     2 scp ~/.ssh/id_rsa.pub 192.168.0.101:~/.ssh/
     3 # 然后在 serverB 运行以下命令来将公钥导入到~/.ssh/authorized_keys这个文件中
     4 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
     5 
     6 # 另外要注意请务必要将服务器上
     7 ~/.ssh权限设置为700
     8 ~/.ssh/authorized_keys的权限设置为600
     9 # 这是linux的安全要求,如果权限不对,自动登录将不会生效
     

    七、验证免密登录

    ssh 192.168.101
     
  • 相关阅读:
    盯盘的基本技巧
    教你一招短线选股法
    卖咖啡8.0i企业版,详细设置规则。让杀毒软件发挥真正的作用!
    PHP获取 当前页面名称、主机名、URL完整地址、URL参数、获取IP
    mysql乱码处理一则
    word2007怎样显示预览快速打印按扭
    一个简单功能强大的Google Map 搜索源码
    Google和百度、雅虎的站内搜索代码
    FCKeditor 2.5 使用方法 配置ASP上传功能 & PHP实例:FCKeditor2.6 的配置和使用方法
    PHP获取当前url路径的函数及服务器变量:QUERY_STRING、REQUEST_URI、SCRIPT...
  • 原文地址:https://www.cnblogs.com/liuys635/p/15114464.html
Copyright © 2011-2022 走看看