• ssh密钥原理


    最近使用jenkins远程拷贝的免密访问遇到不少问题,其中主要原因还是对ssh的加密解密不太熟悉,于是便有了这篇文章。

    首先我们来了解什么是公钥和私钥。

    私钥

    服务器上经过rsa算法生成的私钥。与公钥是一对的密钥对,用于连接其他服务器用。

    公钥

    服务器上经过rsa算法生成的公钥。与私钥是一对的密钥对,用于连接其他服务器用。
    将主机A的id_rsa.pub内容copy到B主机的authorized_keys文件中,这样A主机就能不通过密码连接到B主机。

    说明:

    ● 每个用户都有一对私钥和公钥。
    ● 私钥用来进行解密和签名,是给自己用的。
    ● 公钥由本人公开,用于加密和验证签名,是给别人用的。
    ● 当该用户发送文件时,用私钥签名,别人用他给的公钥解密,可以保证该信息是由他发送的。即数字签名。
    ● 当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他看到。即安全传输。

    .ssh目录介绍

    目录~/.ssh/是用来存储SSH客户端和服务器一些配置文件的位置,这些文件包括:

    • authorized_keys,SSH服务器默认的公钥认证文件,服务器通过该文件配置可以使用该用户认证的用户证书。SSH证书认证就是客户端生成证书(私钥和公钥对),将公钥复制到该文件,每行一个证书。复制公钥时候可以使用ssh-copy-id命令或者直接手动配置authorized_keys文件即可。
    • id_*,包括id_rsa,id_dsa,id_ed25519,id_ecdsa等是保存在该用户下的证书私钥,用户通过SSH证书认证时候会自动搜索这些私钥进行认证。
    • id_*.pub 上述私钥对应的公钥,以.pub为后缀。
    • known_hosts 保存该主机连接过的远程服务器及其对应的主机公钥(用来对主机认证),再次连接到远程服务器如果公钥相同,则直接连接认证。如果没有,或者远程服务器有变化,会提示: 需要输入yes,确认才行。
    • config 文件用来配置本地ssh连接的一些项目,比如配置主机别名的,可以解决同一主机或者多台主机使用多个证书,就可以用config配置,比如下面的配置:
      image
    Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/git/github_id_rsa
    
    Host gitee.com
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/git/gitee_id_rsa
    
    Host chongchong.com
    HostName 112.34.6.71
    Port 2222
    User chongchong
    IdentityFile ~/.ssh/id_ecdsa
    ForwardX11 yes
    Compression yes
    TCPKeepAlive yes
    

    前两个Host配置对github和码云使用不同的证书,后面一个Host对一台主机配置使用非默认的ssh端口、非默认当前用户以及一些启用一些ssh配置项目。
    主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录

    密码登录

    通过密码进行登录,主要流程为:
    1、客户端连接上服务器之后,服务器把自己的公钥传给客户端
    2、客户端输入服务器密码通过公钥加密之后传给服务器
    3、服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

    公钥登录

    公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:
    1、客户端生成RSA公钥和私钥
    2、客户端将自己的公钥存放到服务器
    3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端
    4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
    5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

  • 相关阅读:
    《人月神话》阅读笔记(三)
    记账软件开发进度(六)
    记账软件开发进度(五)
    记账软件开发进度(四)
    《人月神话》阅读笔记(二)
    记账软件开发进度(三)
    package bufio
    Go语言:net/http包的使用模式和源码解析
    package http
    Golang系列中常用包
  • 原文地址:https://www.cnblogs.com/harry66/p/16504452.html
Copyright © 2020-2023  润新知