zoukankan      html  css  js  c++  java
  • SSH安全登陆原理:密码登陆与公钥登陆

     
    SSH全称(Secure SHell)是一种以安全性闻名的应用层网络通信协议,用于计算机间的安全通信,是目前比较成熟的远程登陆解决方案。
    它提供两种方法登陆:
    1.密码登陆
    2.公钥登陆
     
    密码登陆
     
    1.客户端填写用户名密码发起远程登陆
    2.远端服务器收到登陆请求后,会将本地的一个公钥发送给客户端
    3.客户端收到公钥后,将自己的登陆信息用远端服务器的公钥加密,并将加密后的结果发送给远端服务器。
    4.远端服务器收到登陆密文后,用本地私钥解密,拿到登陆信息到数据库比较。登陆信息无误时,显示登陆成功。有误时就报错。
    5.登陆成功后,客户端将会将远端服务器的公钥保存到本地,等下次再登陆时,客户端检测到收到的公钥已经在本地存在(通常保存的目录:$HOME/.ssh/known_hosts),就不会报警告了
     
    提示:
    在密码登陆进行到第2步时,客户端收到了服务器的公钥,但是不确定这个公钥到底是不是要访问的目标服务器(也可能时中间攻击者,发送过来的假公钥)。此时会有提示
     # ssh user@host
    The authenticity of host 'host (18.18.229.21)' can't be established.
    RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
    Are you sure you want to continue connecting (yes/no)?

    如果确定这个公钥就是目标服务器发过来的公钥,就点击yes,完成登陆。


    公钥登陆

    公钥登陆相对密码登陆可以避免中间攻击,同时也简单很多
    1.客户端在本地生成一对公私钥
    2.将客户端本地生成的公钥手动添加到远端服务器上
    3.客户端发起登陆请求到远端服务器
    4.远端服务器收到请求后,会本地生成一串随机字符,并将该随机字符串发送给客户端
    5.客户端收到远端服务器的随机字符串后,用本地私钥加密,并将密文传给远端服务器
    6.远端服务器将收到的密文用保存的客户端公钥解密,并将解密结果与原随机字符串对比,若一致的话证明客户端可信,允许登陆。
    提示:
    客户端生成公私钥的步骤如下:
    第一步:在本地机器上使用ssh-keygen产生公钥私钥对
    执行命令:
    ssh-keygen -t rsa -C "150321****@163.com"
    -t :表示加密类型
    -C :表示密钥标示字符串
     
    第二步:将公钥id_rsa.pub添加到GITLab中的SSHKEY上
    执行命令:
    192:~ zhoufei$ cd ~/.ssh
    192:.ssh zhoufei$ cat id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBQYZidTBczPtJ22xNJwl7Pq+yaZnualVS8juad3Oq+w6v5kgin9sW+xs7w9qrGmWHTkkOIPvckmqY7qobazI32YzI9IKFE2yGm51H1pXM4t9iEB0OCHdy1s1D2gB/bNI2ZJPhDjLOfbGO1Mj9B85n8WR0dy8eYSRBhUneiKor8ENnCvP1Sw4XOsEg6aDCMNRCzDY94Ar4ps41hcg34dNS2eMPsXMrTrz8fCv+IbBltUMDVdcoEFwb8VyYZ8ZspbY6zzRc1nZ5flhfGoB6Zjmmz2tSGCnNS16GdTpoGJd+UaiqrWNuocYWorPocbeMiIi+duZfvYVRNDCmaN0zUlwl****977961@qq.com

    若添加后,无法正常拉取和提交,就本地查询是否有客户端身份信息

    abcdeMacBook-Pro:.ssh zhoufei$ ssh-add -L
    The agent has no identities.

    解决方法:

    abcdeMacBook-Pro:.ssh zhoufei$ ssh-add
    Enter passphrase for /Users/zhoufei/.ssh/id_rsa:
    Identity added: /Users/zhoufei/.ssh/id_rsa (/Users/zhoufei/.ssh/id_rsa)
     
     
     
     
  • 相关阅读:
    二、gulp报错The following tasks did not complete
    一、python演示创建文件
    二、小程序的框架周期
    一、更改路由配置
    spring boot 实现文件下载
    sonarqube扫描安卓代码
    jenkis +sonarqube 对后端代码静态扫描,钉钉群通知执行结果(记录)
    SonarQube 平台搭建代码审查平台步骤
    python list的一个面试题
    oracle单机部署
  • 原文地址:https://www.cnblogs.com/zhou--fei/p/9937693.html
Copyright © 2011-2022 走看看