记录最近遇到的问题

  Index

  1. Ubuntu 环境下生成秘钥 

  2. 使用 git 过程中报错 "gnutls_handshake() failed: The TLS connection was non-properly terminated."

  3. 设置代理的方法

 

  1. Ubuntu 环境下生成秘钥

  在涉及到 ssh 相关的登录等操作中,常需要进行秘钥生成的操作,这里简单记录下命令。

  Ubuntu 中自带有生成秘钥的命令 ssh-keygen,一般通过 -t 选项选择生成秘钥所使用的加密方式,通过 -b 选项确定秘钥的长度。

    ssh-keygen
    -t dsa | ecdsa | ed25519 | rsa        // 生成秘钥的类型
    -b bits                    // 秘钥长度

  如下命令使用 rsa 方式产生对应的公私钥。

    ssh-keygen -t rsa -b 2048           // 通过 rsa 生成 2048 位的秘钥对

  上述命令运行的过程如下所示,系统首选会提示用户输入保存秘钥的文件位置,并提供对应的默认选项,即 ~/.ssh/id_rsa (对 RSA 秘钥而言),默认存放生成的私钥。对应生成的公钥存放在对应文件加上".pub"后缀的路径下。同时,用户可以选择输入对应的 passphrase,功能类似密码,默认直接回车确定时为空。完成上述步骤后即产生对应的公私钥,注意之前在相同文件路径上已经保存了内容,则新生成的秘钥会对之前的数据进行覆盖。

  

  在完成秘钥生成后,即可使用公钥的内容。在一些需要建立网站与设备安全连接的情况下,即可将显示的公钥添加至对应网站中存储。

    cat ~/.ssh/id_rsa.pub        //查看公钥内容

  在生成秘钥之后,如果存在需要使用上述秘钥对进行远端服务器免密登录的需求,可以借助 ssh-copy-id 的功能。

    ssh-copy-id -p port username@host_address

  ssh-copy-id 基本原理是会检查是否存在无法免密登录至 username@host_address 的秘钥对(通过遍历的方式,也被称为 key 未被安装),之后对遍历过程获得的秘钥对,将对应的公钥加入远端服务器(默认为 ~/.ssh/authorized_keys位置)。

 

  参考:

  在 Linux 系统上创建 SSH 秘钥对 - VMware Docs

  ssh-copy-id - manpage  

 

  2. 使用 git 过程中报错 "gnutls_handshake() failed: The TLS connection was non-properly terminated."

  笔者出现这个问题的原因和代理相关,笔者在终端中设置了全局代理变量 ALL_PROXY,此时使用 git 进行 push 操作时即会出现上述问题。

    ALL_PROXY="socks5://127.0.0.1:1080"        //设置代理全局变量

  解决时可以首先查看是否存在设置了代理的全局变量

    env | grep PROXY        // 查看是否存在与代理相关的全局变量

  之后通过 unset 取消对应全局变量的设置,笔者遇到的问题即可解决。

    unset ALL_PROXY        // 取消全局变量 ALL_PROXY 的设置

  另在查看网络资料过程中,发现可以通过 git 自带命令进行代理的设置,记录如下。

    git config --global --list        // 查看全局设置项
    // 设置全局代理
    git config --global http.proxy 'socks5://127.0.0.1:1080'    // 设置 http 代理
    git config --global https.proxy 'socks5://127.0.0.1:1080'    // 设置 https 代理
    git config --global --unset http.proxy                       // 取消代理设置
    // 设置单个网站使用代理
    git config --global http.https://github.com socks:127.0.0.1:1080
    git config --global --unset http.https://github.com

  关于 git config 的简单介绍,可以参考笔者的笔记 git 学习笔记 - git add/commit/log 等基本操作介绍 中 git config 部分。

  参考:解决拉取 github 仓库报错 “gnutls_handshake () failed” 问题

 

  3. 设置代理的方法

  主要是记录下找到的一个链接,Configuring Softwares to Use proxy

  

posted on 2021-11-05 21:12  yhjoker  阅读(127)  评论(0编辑  收藏  举报

导航