zoukankan      html  css  js  c++  java
  • SSH服务登陆验证

    ssh服务登陆验证有两种方式:

      1.基于用户名和密码

      2.基于密钥

    基于用户名和密码验证过程:

      1)客户端想ssh服务器发起请求,服务器会把自己的公钥发送给客户端,

      2)客户端用服务器的公钥加密自己的密码,并发送给服务器

      3)服务器用自己的私钥解密得到客户端的密码并验证,如果密码正确则登陆成功.

    基于秘钥验证过程:

      1)客户端生成一对秘钥

      2)客户端把自己的公钥传送给服务器

      3)客户端发送一个连接请求,信息包括ip和用户名

      4)服务器去authorized_keys文件中查找相应记录,如果有,就生成一个随机字符串

      5)服务器使用客户端的公钥把随机字符串加密后发送给客户端

      6)客户端使用私钥解密,再把得到的字符串发给服务器

      7)服务器对比此字符串是否与自己生成的字符串一致,如果一致就允许登陆

    基于秘钥认证示例:

    两台主机之间:

      1)客户端生成一对秘钥

      命令格式

      ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]

        -p 口令,可为空

        -f 指定秘钥存放路径

      也可以所有参数省略直接执行ssh-keygen

      ]# ssh-keygen

    clip_image001

      执行后三次回车.会生成未加密的私钥/root/.ssh/id_rsa和公钥/root/.ssh/id_rsa.pub

      2)把公钥文件传输至远程服务器对应用户的家目录,如果写错成私钥文件名,不用担心,传过去的依然是公钥.

      命令格式

        ssh-copy-id [-i [identity_file]] [user@]host

    ]# ssh-copy-id -i .ssh/id_rsa.pub root@172.18.7.77
    root@172.18.7.77's password: 
    Now try logging into the machine, with "ssh 'root@172.18.7.77'", and check in:
    .ssh/authorized_keys
    to make sure we haven't added extra keys that you weren't expecting.
    

    3)在服务器端查看/root/.ssh/

    ]# cat /root/.ssh/authorized_keys 
    ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAusWy2QOYUC5kuwG+lNO7mWqWO/lvyqhAB1jiEcpAlns//kxVkifRtfDrA0+u7Pi+/eenW/6g1ZA6iP1muyprNXa+F84QjAaIBVlJuizKzF1iVFDOULdbyVRkKxx5Z8rlmG8WPeDl/1q9yIRrjUD84am8FOHsT/tzFLbEoeKL8vd/F6V1FPqlI+DLO28LgQ/b1Q21lJRk/XB6YvmFain9qwlzB0VF4vKVAhwVRmzA6hCxS7zohIJe8Y+1pC654mKwERtaM6PBUYPr/l0iznfU5Dxsvr4d8hp9xe2tDkyi7xkS0wd0DOE7SGbgwqUKxh7iuA+qBdln2h8dtC0dqGPlaw== root@centos6.qt
    

    说明已经传输成功

    4)测试

      在客户端直接执行

    ]# ssh 172.18.7.77
    Last login: Thu Jan 4 21:45:22 2018 from 172.18.7.61
    

      即可免密码直接登陆,不输用户名默认以当前登陆用户身份尝试登陆.

      使用Xshell或SecureCRT之类的客户端软件实现基于秘钥登陆的原理与上文相同,只要通过客户端软件生成一个公钥,并复制到服务器中,将公钥内容追加到 ~/.ssh/authorized_keys中

      之后新建一个以秘钥方式登陆的会话,则可以免密码直接登陆.

  • 相关阅读:
    git cmd 命令在已有的仓库重新添加新的文件夹
    google guava Multimap的学习介绍
    JavaScript笔记基础版
    初识hive
    深入学习HBase架构原理
    初识Azkaban
    MapReduce工作流多种实现方式
    Hive 分组问题
    sqoop使用中的小问题
    Sqoop 结合多种系统的具体应用
  • 原文地址:https://www.cnblogs.com/Q--T/p/8251955.html
Copyright © 2011-2022 走看看