SSH登录及其原理详解

本文深入解析SSH(Secure Shell)协议,包括口令和密钥验证登录方式,以及SSH加密原理。通过实例展示了如何使用SSH连接GitHub,强调了非对称加密在SSH安全中的作用,并对比了对称加密与非对称加密的优缺点。最后,提供了SSH登录GitHub的步骤,帮助读者实践SSH连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

干货时刻

本文主要讲解了什么是SSH以及SSH协议口令验证登录和公钥登录等两种登录方式的原理,同时演示了如何用SSH连接Github

SSH 是什么

SSH的全称为Secure Shell,即安全外壳协议。它是一种专为远程登陆会话和网络服务提供安全性的应用层协议。说白了就是用来连接服务器的一种方式。

SSH的加密原理中,就用到了非对称加密算法。在讲SSH加密原理前,我们先溯本追源,了解一下加密算法和其中经典的非对称加密算法RSA

加密算法

计算机网络中的加密算法主要分为对称加密、非对称加密、散列算法等三种方式。

  • 对称加密:加密和解密使用同一个密钥,例如 DESAESIDEA、国密SM1/SM4等等。
  • 非对称加密:发送方用公钥对信息进行加密,接收方收到密文后,使用私钥进行解密,例如RSAECC和国密SM2
  • 散列算法:哈希加密系列算法,特点是不可逆、唯一性,例如MD5SHA、国密SM3

相比起对称加密,非对称加密的安全性更高,但加解密的效率也相对降低。

因此像HTTPSTLS1.2握手协议就是采用了对称加密和非对称加密结合的方式进行密文数据传输。

RSA 非对称加密算法

RSA加密算法是经典的非对称加密算法,其基本流程如下:

  1. 客户端在本地构建公钥和私钥,然后将公钥发送给服务器
  2. 服务器向客户端发送数据的时候用公钥进行加密,客户端收到数据后用私钥解密
  3. 客户端向服务器发送数据的时候用私钥进行加密,服务器收到数据后用公钥解密

缺点在于:如果公钥在传输中泄漏,则黑客可以用公钥破解客户端发送的数据。

SSH 加密原理

SSH 共有两种登录方式:

  • 口令验证登录
    1. 服务器生成公钥和私钥
    2. 客户端发起连接请求,服务器将公钥发给客户端
    3. 客户端生成口令(服务器密码),并用服务器发来的公钥加密,发送给服务器
    4. 服务器通过私钥解密,拿到口令(服务器密码)
    5. 如果正确则认证成功
  • 密钥验证登录
    • 客户端生成公钥和私钥,将公钥提前部署在服务器上
    • 客户端发起连接请求
    • 服务器随机生成一个字符串,用本地的公钥加密,发送给客户端
    • 客户端通过私钥解密,将解密后的字符串发送给服务器
    • 服务器验证本地字符串和客户端发来的字符串的一致性,如果通过,则认证成功
SSH 远程登录 github

根据上节所述,第一步,我们首先要在客户端生成公钥和私钥。

随便找一个文件夹,右键菜单打开 git bash,键入:

ssh-keygen -t rsa

xedns.png

其中,密钥交换算法选择rsa。之后之后一路敲空格默认即可。

这时,我们可以在本地找到这两把密钥:私钥id_rsa和公钥id_rsa.pub。路径如下:

  • windowsC:/Users/admin/.ssh(不同电脑型号的用户文件夹地址不同,区别就在于admin这个路径,我的是admin,你的可能是ASUS、Lenovo、balabala

    xeSSg.png

  • mac/linux~/.ssh

第二步,我们要把公钥部署到github上。

bash中键入:

cd ~/.ssh
ls
cat id_rsa.pub

如下图所示,我们可以拿到公钥的内容,复制下来。

xesDK.png

接下来,进入我们的github,点击右上角的个人头像,再进入settings

xeV8a.png

之后先点击SSH and GPG keys,再点击New SSH key新建一个SSH公钥

xe0wB.png

如下图所示,将你复制好的公钥粘贴到 balabala的位置,输入自定义的公钥名,点击Add SSH key即可。

xefkS.png

第三步,我们发起连接请求:

ssh -T git@github.com

其中git@github.com相当于目标用户@目标主机

第一次连接通常会弹出来下面这句话:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

我们键入yes即可,之后就会弹出下图,表示登录成功。

xelpN.png

总结与思考
  • 口令验证:其实是将口令进行非对称加密,通信双方都基于这个口令进行后续操作,比如SSH登录中,口令就是服务器密码;再者,传统的TLS握手(TLS 1.2之前)是基于RSA加密算法做密钥交换的,它的口令就是会话密钥。
  • 密钥验证:它的前提条件是服务器需要有客户端的公钥,然后通过一次字符串的非对称加密实现免密码登录
结束语

想要学习更多优质内容的同学,关注收藏一下作者的个人主页:东曜说 ~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小光

有幸帮助到您,请作者喝杯咖啡~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值