zoukankan      html  css  js  c++  java
  • centos7下ssh服务登陆认证详解

    ssh 是一种网络协议,为远程登陆和其他服务提供了安全协议。在 ssh 没出来之前,很多服务是明文传输的,很不安全。ssh 的出现就是为了解决这种问题。

    现在大多数的 linux 主机默认就装上了 sshd 服务,方便我们使用。

    如果没有安装,则查看,并安装。

    rpm -qa|grep ssh
    yum install -y openssh openssh-server
    systemctl enable sshd
    systemctl start sshd
    firewall-cmd --zone=public --add-port=22/tcp --permanent
    firewall-cmd --reload
    

      

    一、ssh的两种安全验证

    1、基于口令的登陆

    比如我们在主机 192.168.10.222 上通过 ssh 以 root 用户连接 223 主机,注意 223 主机上必须要有 root 用户。

    ssh root@192.168.10.223
    

      

    如果第一次登陆远程主机,系统提示该主机安全性无法确定,是否继续。当我们输入 yes 后,该远程主机的公钥会保存在 ~/.ssh/known_hosts 文件中。

    再次登陆时,会跳过警告,直接提示输入密码。

    然后我们输入密码,就可以成功登陆到 223 主机了。

    整个登陆流程如下:

    1、222 主机发起远程登陆请求。

    2、223 远程主机返回公钥给 222。

    3、222 主机使用公钥对用户输入的密码进行加密。

    4、222 把加密后的密码发给 223 主机。

    5、223 主机用私钥进行解密。

    6、解密后判断密码是否一致,一致就同意登陆。

    当然,上面的流程会存在一个漏洞,如果有人冒充了 223 主机,把伪造的公钥发给222,那冒充主机就可以获取用户的登陆密码了。

    2、基于公钥的免密登陆

    由于时常需要跑一些自动化脚本,为了避免每次登陆需要输入密码,我们需要配置一对密钥。

    ssh-keygen

    也可以指定用户运行 ssh-keygen,那样生成的密钥对就是针对指定用户的。

    sudo -u 用户名 ssh-keygen

    通过 ssh-keygen 一路回车,将会在当前用户的家目录下的 .ssh 目录下创建 id_rsa 和  id_rsa.pub 两个文件。

    由于222 主机当前登陆用户为 root,所以路径为 /root/.ssh/ 。

    为了能够以 root 用户登陆到 223 主机。我们需要把 222 主机上的 root 用户的公钥拷贝到 223 主机的 root 用户上。

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.223
    

    传输公钥时,需要我们输入 223 主机 root 用户的密码,输入成功后,则公钥就拷贝到了 223 主机的 root 用户家目录下的 .ssh/authorized_keys 文件里。

    这样,我们再次远程连接时,就不需要输入密码了。

    ssh root@192.168.10.223  

    注意,你请求主机以什么用户连接远程主机,你就把当前用户的公钥拷贝到你要连的远程主机的用户下。

    比如,我们在 222 主机上创建 test 用户并切换到 test 用户,然后连接 223 主机。

    adduser test
    passwd test
    su test
    

    然后我们为 test 用户生成密钥对,然后把公钥拷贝到 223 主机的 root 用户上。

    ssh-keygen
    ssh-copy-id -i /home/test/.ssh/id_rsa.pub root@192.168.10.223
    

    这样,我们以 222 主机上的 test 用户,就可以免密登陆 223 主机了。

    ssh root@192.168.10.223
    

    切回 root 用户后,我们仍可以 test 用户登陆远程主机。

    sudo -u test ssh root@192.168.10.223
    

    登陆流程如下:

    1、222 主机发起远程登陆请求。
    2、远程 223 主机返回一个随机串。
    3、222 主机对这个随机串用私钥进行加密,并返回给远程 223 主机。
    4、223 远程主机使用分发过来的公钥对随机串进行解密。
    5、解密成功,说明登陆信息正确,允许登陆。

  • 相关阅读:
    【Java集合】JDK1.7和1.8 HashMap有什么区别
    【Java集合】为什么HashMap的长度是2的N次幂?
    【VritualEnv】虚拟环境的介绍和基本使用
    【分布式事务】分布式事务解决方案
    【JVM】JVM中的垃圾收集器
    jQuery事件触发前后进行其他的操作
    在jQuery中使用自定义属性
    使用其他服务器引入JS文件
    引入其他服务的JS、和 本地的JS文件,script的属性
    trigger 和 triggerHandler(),自定义事件
  • 原文地址:https://www.cnblogs.com/jkko123/p/12134058.html
Copyright © 2011-2022 走看看