SSH简介:SSH链接方式是啥?

ssh是一种安全的传输模式

git要求推送代码的用户是合法的,所以每次推送时候都要输入密码,

用以验证你是否为合法用户,为了省去每次都要输入密码的步骤,采用ssh公钥,密钥

也就是你说的sshkey来验证你是否为合法用户

在你的电脑生成了一个唯一的ssh公钥和私钥,公钥放到git上面,当你推送的时候,git就会

匹配你的私钥是否跟工蜂网页上面的公钥是配对的,正确就认为你是合法的,允许推送。

sshkey可以理解为是你的身份标识,放在git上面表明你是这个项目的一个开发人员,但是别

人是可以截获的,你本机的私钥别人就无法截获,sshkey就可以保证每次传输都是安全的。

注意:这边的公钥和私钥是两个不同的钥匙串。私钥放在自己手里(机器里),公钥放到git网页上,比如工蜂

解析一下我们文档中的ssh配置步骤

1、创建公钥文件

$ ssh-keygen -t ed25519 -C "企业微信名@tencent.com"

这边的"ed25519"只是默认的文件名,不代表任何意义

这边会生成两个文件 #这里我文件名用的是id_rsa,等同于前面的命名ed25519

此处的id_rsa就是私钥,留在我自己手里的

id_rsa.pub是公钥,稍后参照文档将这个上传至工蜂页面

注意事项:

此处的公私钥,和机器是完全对应的。毫无关联。只要成对就行。别扯什么以前能用没问题,该重新生成的就得重弄

//很多用户沿用旧的秘钥,但是仍然报错的。有可能是用户的私钥或者公钥其中一方丢失。必须保证秘钥的转移是成对的。否则就得重新生成了

2、创建config及添加config内容

创建config

$ touch config## 创建一个config文件
$ chmod 600 config## 太宽松的权限会被git认为是错误,缩写权限为600
$ vim config## 编辑config文件并把第3步中内容添加在config文件

此处科普一下关于chmod 600的含义:

Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。
chmod xxx <filename>是用来加载文件权限的。
权限设置:
[rwxX]r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
将权重转为数字,后续可用数字来代表权限。
r=4 , w=2 , x=1另外chmod 后面的三个数字分别代表三个不同角色的权限
按顺序是User、Group、Other的权限
完整写法应该是
chmod u=权限,g=权限,o=权限 <filename>
比如://设置所有人可以读写及执行:
chmod 777 <file>  //等价于chmod u=rwx,g=rwx,o=rwx <filename>
此处的7,代表r+w+x=4+2+1=7
三个7代表三者权限chmod 600 <file>  //等价于chmod u=rw,g=没权限,o=没权限 <filename>
我们常用的就是这个,尤其是devcloud中,由于有很多个不同的用户在一台机器中。
设置600才能保证仅有自己能用到

添加config文件内容

Host git.woa.com
HostName git.woa.com//上面两句都是写生效的域名的。所以一台服务器连多个Git,包括github,git工蜂,gitee的时候,就得写这个来指向
User git
Port 22//因为devcloud里的ssh_config里会默认ssh是36000端口连接,得改回这个,工蜂是22端口。可以参考咱们的文档:https://iwiki.woa.com/pages/viewpage.action?pageId=410396231HostkeyAlgorithms +ssh-rsa
IdentityFile /root/.ssh/id_ed25519//上面这句是指向本地私钥文件路径,有一个openssh等级太高导致我们rsa私钥失效的问题就通过添加这句解决的,参考文档:https://iwiki.woa.com/pages/viewpage.action?pageId=1161815658

常见问题补充解析

注意:使用 ssh 请在 Git bash 命令行执行,在系统命令行下执行会读不到key。

1. 使用 ssh clone 报错:ssh: connect to host git.woa.com port 36000: Connection timed out

解决方法:修改~/.ssh/config 将36000注释掉就走22端口。

同理还会有其他端口报错,都是可以在这边指定的

2. 报错 :Permission denied (publickey).fatal: The remote end hung up unexpectedly

可能成因1:出现这个报错的原因是 ssh 没有配置正确,或者使用 ssh 链接但是 ssh key 没有添加到git的帐号设置中。

解决方法:检查 ssh 的配置,将 ssh key 添加到git的帐号设置中.

可能成因2:openssh-7.0p1 开始默认不支持dsa密钥,openssh-8.8p1 开始不再接受低版本设备的rsa密钥(

ssh-keygen

指令能生成密钥不代表就能使用),比如MacOS

解决方法:使用别的加密方式(如上文用到的ed25519),重新生成并添加ssh key到git的帐号设置中; 如果本地的openssh高于或等于8.6p,并且原本的rsa密钥不方便替换,可通过在~/.ssh/config里添加

PubkeyAcceptedAlgorithms +ssh-rsa

来兼容

(注:低版本的openssh不支持PubkeyAcceptedAlgorithms,如果误加会导致Bad configuration option的报错,ssh同样会不可用。所以这里优先推荐更换成ed25519密钥)

其实就还是因为之前的私钥不被接受了。最妥善的处理方法就还是重新生成,走一遍这个ssh流程,这样添加的config也被认了

4. 报错: Bad owner or permissions on xxx/.ssh/config

问题成因:config文件权限不对。

解决方法:chmod 644 ~/.ssh/config(将config文件权限改为644)。

详情含义见前方#此处科普一下关于chmod 600的含义

5. 使用ssh clone时总是报错使用另外的key值去操作:

解决方法:删掉config文件全部内容,或者相关的内容(确定跟某个key值相关的内容),重新添加一遍key。

用户.ssh如果有多个key,有一个是有效的却没有用,那就可能是因为没有指定正确的路径

这里的重写。大概率是因为重写的时候参考教程,更正了路径

6. 使用ssh clone时还是提示输入密码:

解决方法:ssh方式不能在外网以及StaffWifi中使用,检查自己网络。

网络根本无法链接上GIT服务端,就会报这个来着。要不然再排查下git代理.gitconfig中有没有,或者系统有没有设代理

跟端口已经不一样了,这个是无法Ping通的

7. 报错:sign_and_send_pubkey: signing failed: agent refused operation:

问题原因:ssh的私钥key没有被添加到ssh-agent中。

解决方法:在客户端机器上运行命令

ssh-add

, 添加SSH key到SSH的agent中.然后可以用命令

ssh-add -l

(同样也是在客户端机器执行)查看实际是否添加成功。

根据前面的ssh简介所说,

ssh 推荐的登录方式是使用私钥登录。但是如果生成私钥的时候,设置了口令/密码(passphrase),每次登录时需要输入口令也很麻烦。可以通过 ssh-agent 来管理私钥,把私钥加载进内存,之后便不用再输入密码。

9. 报错:Unable to negotiate with xxx port 22: no matching host key type found. Their offer: ssh-rsa

问题原因:本地的openssh版本较高(大于等于8.8p), 高版本ssh客户端不接受服务端的ssh-rsa公钥。一般通过

ssh -vT git.woa.com

可看到打印的openssh版本

解决方法:参考上文的 ~/.ssh/config 配置,加上

HostkeyAlgorithms +ssh-rsa

这里其实跟报错2,还有报错5有点像的感觉?因为都是rsa文件不能被认证到。添加允许ssh-rsa的权限即可

要不然,再走一边流程,生成,加入config文档这样子?基本能解决大部分问题

额外补充一个:SSH连接方式自动断掉的梗

用ssh推送会莫名断掉的问题

ssh push的话底层会做一些的逻辑,push时间超过10min客户端就会超时了 如需使用ssh推送,需要拆分推送

临时解决方案:

使用http方式可以了。

主要问题:SSH强制超时,

ssh连接超时问题解决方案:

1.修改server端的etc/ssh/sshd_config

ClientAliveInterval 60 #server每隔60秒发送一次请求给client,然后client响应,从而保持连接

ClientAliveCountMax 3 #server发出请求后,客户端没有响应得次数达到3,就自动断开连接,正常情况下,client不会不响应

2.修改client端的etc/ssh/ssh_config添加以下:(在没有权限改server配置的情形下)

ServerAliveInterval 60 #client每隔60秒发送一次请求给server,然后server响应,从而保持连接

ServerAliveCountMax 3  #client发出请求后,服务器端没有响应得次数达到3,就自动断开连接,正常情况下,server不会不响应

GIT用SSH链接的相关文档的整理与补充相关推荐

  1. ❤️MVC三层架构及相关文档(建议收藏)❤️

    MVC三层架构 什么是MVC:Model .View.Controller:模型.视图.控制器 Model 业务处理:业务逻辑(Servlet) 数据持久层:CRUD(Dao) View 展示数据 提 ...

  2. 【ember zigbee】序章:协议栈相关文档学习笔记

    原文地址:https://blog.csdn.net/tainjau/article/details/90648114 文章目录 写在前面 一.材料出处 二.文档解析 2.1.EZSP Protoco ...

  3. 集成板的CodeBlocks编译器配置相关文档

    集成板的CodeBlocks编译器配置相关文档 如需安装包请后台留言!! 原文链接:https://w.url.cn/s/A1RSfZP 打开安装包进行安装,除安装路径大家可以自行调整外, 其他默认即 ...

  4. 软件是计算机什么及相关文档的总称,1冯-诺依曼原理的基本思想是什么.doc

    文档介绍: 2.什么是计算机硬件.计算机软件?各由哪几部分组成?它们之间有何联系? 答:人们通常把构成计算机的物理装置称为计算机的硬件,其主要功能是:存放控制计算机运行的程序和数据,对信息进行加工处理 ...

  5. 【Windows 逆向】CheatEngine 工具 ( CheatEngine 简介 | 使用 Lazarus 编译 CE 源码 | CheatEngine 相关文档资料 )

    文章目录 一.CheatEngine 简介 二.使用 Lazarus 编译 CE 源码 三.CheatEngine 相关文档资料 一.CheatEngine 简介 CheatEngine 简称 CE ...

  6. 【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )

    文章目录 一.substrate 简介 二.substrate 相关文档资料 一.substrate 简介 substrate 官网 : http://www.cydiasubstrate.com s ...

  7. turbo c相关文档

    无意中在网上找到的turbo c 2.0相关文档,有reference guide 和user guide.下载地址见(镜像一 ,镜像二 ,镜像三 ,镜像四 ).这些网站还有很多其他各类软件相关文档, ...

  8. 织梦dedecms 相关文档标签(likearticle)实现关联整站文档

    注意:本教程适用于 DedeCMS V5.7 其他版本楼主未测试 默认情况下,相关文档(likearticle)的关联,在只能调用当前栏目(包括顶级栏目下的下级栏目)的文档,那么我们如何来实现关联网站 ...

  9. ElastaticSearch----top_hits,es获取聚合的相关文档结果

    使用场景 使用es聚合时,有时还需要获取query(或filter) 的相关文档结果(数据). 比如统计各个地区编码的营业额,得到了聚合的统计结果,还想知道query结果中对应的地区名称,并根据营业额 ...

最新文章

  1. rsync服务同步,linux日志,screen工具
  2. 2019年上半年收集到的人工智能开源框架介绍文章
  3. 文章内容排版对网站优化有哪些影响?
  4. 汇编语言串指令经典题目
  5. [蓝桥杯][算法提高VIP]贪吃的大嘴(多重背包)
  6. sql union 和 union all
  7. winform 只允许显示一个子窗体
  8. 优秀!5部顶级数学纪录片,假期看剧涨知识必备!
  9. 小程序学习笔记(4)-猫眼电影案例
  10. 机器学习导论--1.机器学习理论基础详解
  11. html 给文字加图片背景,如何给文字添加背景图?给文字填充图片背景色的操作方法...
  12. python中的reshape是什么意思,Python的reshape的用法
  13. MogaFX—ServiceNow的Bill McDermott正在关注货币汇率
  14. Java高级 正向代理和反向代理理解
  15. Java相关英语单词
  16. 决策树与K-近邻分类随堂笔记(二)
  17. AtCoder Beginner Contest 249题解(E,F)
  18. dubbo-go 白话文 | go 和 java 互通有无
  19. python画彩色立体柱状图
  20. ggg的区别+linux、GNU、GNU/linux

热门文章

  1. 做网赚如何引流,这些方法你都试了么
  2. HDU 4389 - X mod f(x)
  3. 从苹果ATT新政第一年,看全球数据主权之争与治理规则的变迁
  4. 《静态时序分析实用方法》第七章翻译
  5. 安全工程转计算机专业,2019安全工程专业就业前景和就业方向分析
  6. MIXLAB_NASA_TICKET生成
  7. 洛谷P2455 [SDOI2006]线性方程组
  8. SmartPhone-系统文件篇
  9. 如何用python实现地图定位_GPS 测试汇总和python GPS 导航地图实现
  10. 揭个人信息黑产链条:含50多种交易大项 可私人定制