首页 > 其他分享 >Github上解决OpenSSH的绑定问题(解决git clone 出现报错的问题)

Github上解决OpenSSH的绑定问题(解决git clone 出现报错的问题)

时间:2023-09-09 21:14:07浏览次数:45  
标签:Github 密钥 OpenSSH github 报错 SSH git com ssh

 

一.OpenSSH介绍

        OpenSSH 是一款用于远程登录的连接工具,它使用 SSH 协议。 它会加密客户端与服务器之间的所有流量,从而遏止窃听、连接劫持和其他攻击。OpenSSH分client(用户端)和server(服务器)   

 


二.OpenSSH 安装

1.使用Windows的设置来安装,还可以通过PowerShell来安装。详细的安装方法可以查看微软官方文档:https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse

2.可以下载安装包来安装,下载地址:https://github.com/PowerShell/Win32-OpenSSH/releases


三.Open SSH 绑定流程

1. 生成SSH密钥

首先在本地机器上打开终端,输入以下命令生成SSH密钥

ssh-keygen -t ed25519 -C "<your github email>"
# -C后面的是自定义的密钥注释/标签,这里一般输入自己的邮箱
# -----------------------------------------------
# 运行上述命令,会询问你是否自定义密钥名字/路径,以及是否需要给该密钥添加密码,敲回车是跳过
# Generating public/private ed25519 key pair.
# Enter file in which to save the key (/home/xxx/.ssh/id_ed25519): github_auth
# Enter passphrase (empty for no passphrase): 
# Enter same passphrase again: 
# Your identification has been saved in github_auth.
# Your public key has been saved in github_auth.pub.
# The key fingerprint is: xxx
# The key's randomart image is: xxx
# -----------------------------------------------
# ed25519是目前最安全、加解密速度最快的key类型。
# 但有些旧版本的SSH还不支持ed25519算法,这时候可以用rsa算法。
# 因此,有ed25519就用ed25519,没有就用rsa。
ssh-keygen -t rsa -b 4096 -C "your github email"

2. 添加密钥到ssh-agent(Optional)

如果是自定义了密钥名字(例如我上面将密钥名字从默认的id_ed25519修改为github_auth),此时就需要自己手动添加密钥到SSH认证代理ssh-agent中。当然,如果没有自定义名字,可以不进行这一步操作,默认的名字是默认自动添加到SSH认证代理中的。

首先,在后台启动ssh-agent

eval "$(ssh-agent -s)"
# 输出:Agent pid 59566

然后,把之前生成的SSH密钥添加到ssh-agent中:

ssh-add ~/.ssh/github_auth
# 输出:Identity added: github_auth (xxxx)

3. 添加密钥到Github账户

生成SSH密钥后,复制公钥内容到自己的Github账户中。具体地,点击Github右上角账户图标→Settings→SSH and GPG keys→New SSH key,在Key一栏粘贴公钥内容,在Title一栏设定这个SSH密钥的标识:

cat ~/.ssh/github_auth.pub
# 把终端输出的内容复制到Github账户中

 

 4.验证

执行完上述两步操作后,正常情况下已经配置成功了,此时可以验证一下:

ssh -T [email protected]
# 如果输出以下内容,则表示配置成功,此时即可直接进行任何git操作。
# Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

 

四.启动SSH服务器

开启服务:以管理员身份打开 PowerShell,输入Start-Service sshd

设置开机自启:以管理员身份打开 PowerShell,输入Set-Service -Name sshd -StartupType 'Automatic'或者通过右键我的电脑→管理打开计算机管理,在服务里面找到OpenSSH SSH Server来开启和关闭服务和设置自启动。(如下图,实操环境:Windows10)

(版权声明:本文为CSDN博主「古代宇航员」的原创文章
原文链接:https://blog.csdn.net/v781423070/article/details/131322758)

 


添加入站规则

        在Windows Defender防火墙中添加入站规则,添加22/tcp端口。

 

 

 

 

 

 


验证

在cmd窗口中输入netstat -p tcp -an或者netstat -ano,如下图,可以看到监听22端口了。

 


五.相关问题解决

Permission denied

如果在配置完成后,通过ssh连接github时,报错:

# Permission denied (publickey).

大概率是因为:自定义了密钥名字/路径,但没有执行第二个步骤将密钥添加到SSH认证代理中。

可以输入以下命令验证是否生成了密钥以及是否有添加到SSH认证代理中,如果没有就按第二步骤操作一遍。

ssh-add -l -E sha256
# 如果配置失败,则没有任何输出;如果配置成功,则会输出类似以下内容
# 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)

除了通过ssh-add的方式外,也可以通过设置config文件让SSH认证代理能找到这个密钥文件,从而解决这个问题:

vim ~/.ssh/config
# 打开(如果没有就创建一个)config文件,并输入以下内容。
# 此外,需要注意,config文件的权限需是600。

Host github.com
    HostName github.com
    IdentityFile ~/.ssh/github_auth # 这里输入你的密钥路径

Support for password authentication was removed ...

在配置好SSH后,进行git操作时,仍要求输密码,即使输入了正确的账户和密码,还是报错:

# remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
# remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
# fatal: Authentication failed for 'https://github.com/xxx/xxx.git/'

出错的原因在于:本地仓库在clone时使用的是HTTPS URL,故该仓库此时的remote协议会是HTTPS协议,然而SSH密钥连接只支持SSH URL,不支持HTTPS URL,故会要求输账户密码。

此时,通过以下命令可以查看到仓库的remote协议是HTTPS协议:

git config --get remote.origin.url
# 如果输出类似以下内容,则说明remote协议是HTTPS协议
# https://github.com/xxx/xxx.git

# 也可以查看仓库内的.git/config文件,查看url是git协议还是https协议。
# [remote "origin"]
#   url = https://github.com:YOUR_ACCOUNT/YOUR_PROJECT.git
#   fetch = +refs/heads/*:refs/remotes/origin/*

因此,需要将remote协议从HTTPS协议修改为GIT协议。在本地仓库路径下输入以下命令:

git remote set-url origin [email protected]:xxx/xxx.git

此时,再进行git的pull/push操作就不再需要输密码了,直接可以通过SSH密钥认证。


参考文献

1.版权声明:CSDN博主「古代宇航员」
原文链接:https://blog.csdn.net/v781423070/article/details/131322758

2.版权声明:知乎博主「工具人」

原文链接:Github配置SSH密钥连接(附相关问题解决) - 知乎 (zhihu.com)

标签:Github,密钥,OpenSSH,github,报错,SSH,git,com,ssh
From: https://www.cnblogs.com/xiaohuiwei123/p/17690090.html

相关文章

  • Meta推出像素级动作追踪模型,简易版在线可玩 | GitHub 1.4K星
    前言 视频动作跟踪,已经精确到了每个像素!本文转载自量子位仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理【CV技术指南】CV全栈指导班、基础入门班......
  • 使用反射修改bean的属性值报错
    前段时间在使用spring的ReflectionUtils工具类中的doWithFields()方法时,报了一个无法修改private修饰的字段的错误,报错信息如下:java.util.concurrent.ExecutionException:java.lang.IllegalStateException:Notallowedtoaccessfield'xxx':java.lang.IllegalAccessException......
  • jenkins 插件更新页面报错
    jenkins插件更新页面报错:Jenkins安装插件出现Signatureverificationfailedinupdatesite'default'(showdetails)在docker-compose.yml启动文件加上hudson.model.DownloadService.noSignatureCheck=true环境变量version:"3.6"services:competent_goodall:......
  • GO语言中import GitHub的包 会影响加载速度吗
    在Go语言中使用GitHub的包不会影响加载速度。在Go语言中,所有包都是静态导入的,因此使用import关键字导入GitHub的包时,Go编译器会将包中的代码文件解压缩到您的项目目录中,并在运行时直接调用这些文件,而不是通过网络下载它们。这意味着import语句不会增加项目的启动时间,而且使用import......
  • 报错解决 :Resolved [org.springframework.web.bind.MissingServletRequestParameterE
    报错解决:Resolved[org.springframework.web.bind.MissingServletRequestParameterException解决方法:RequestParam注解加上required=false属性。这样请求参数可以传null对象。如果没有加上required=false属性,这样请求参数传""空字符串也不会报错。如果没有加上required=......
  • TSINGSEE青犀视频EasyDarwin开源平台源码二次开发报错service not found排查及解决
    TSINGSEE青犀视频开发的EasyDarwin开源平台提供的开源项目,拥有完整的源代码,帮助开发者更快更简单实现流媒体音视频产品功能,实现移动互联网流媒体直播点播。有位用户反馈在Windows环境下的EasyDarwin源码二次开发中,Git拉完源码,出现无法运行的情况,报:servicenotfound源码路径中找不......
  • kali启动isc-dhcp-server报错
    替换/etc/init.d/isc-dhcp-server文件:(引自https://www.linux.org/threads/isc-dhcp-server-kali-bug.19233)#!/bin/sh#####BEGININITINFO#Provides:isc-dhcp-server#Required-Start:$remote_fs$network$syslog#Required-Stop:$remote_fs$network$syslog#......
  • github操作小白手把手教程|Linux从远程项目拉取到本地并更新代码上传到远程
    当你在github或者团队中需要用github管理项目时,没有接触过github的人如何从0开始配置电脑连接github远程仓库,并把项目中的代码拉取到本地电脑中,然后进行修改并上传到远程项目中实现项目管理。一、Linux连接github安装git打开终端sudoapt-getupdatesudoapt-getinstallgi......
  • 解决vue3+js unplugin-auto-import/vite 自动引入生效后 页面eslint报错
           ......
  • 视频监控汇聚平台EasyNVR安防视频平台新版本无法对接到EasyNVS平台并报错login error,
    安防监控系统EasyNVR视频云存储平台可实现设备接入、实时直播、录像、检索与回放、视频云存储、视频分发等视频能力服务,可覆盖全终端平台(pc、手机、平板等终端),在智慧工厂、智慧工地、智慧社区、智慧校园等场景中有大量落地应用。 有用户反馈,在使用新版本EasyNVR时,出现了无法对......