前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >windows git 使用的一些问题和解决方案

windows git 使用的一些问题和解决方案

作者头像
chuchur
发布2022-10-25 15:00:25
8120
发布2022-10-25 15:00:25
举报
文章被收录于专栏:禅境花园

错误场景1

代码语言:javascript
复制
Permissions for "xxx" are too open

就是私钥权限太大的问题,在linux里面只要给定对应的权限即可

For Mac/Linux

代码语言:javascript
复制
chmod 755 ~/.ssh/  
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub   
chmod 644 ~/.ssh/known_hosts  

For Window

如有以下提示说明ssh 服务没启动

代码语言:javascript
复制
Error connecting to agent: No such file or directory
# OR
Could not open a connection to your authentication agent

启动ssh 服务(管理员权限运行)

代码语言:javascript
复制
Set-Service -Name ssh-agent -StartupType automatic
Start-Service ssh-agent

解决办法 (去掉特定权限)

  • 选中私钥文件,alt+enter打开属性
  • 选择安全选项卡,点击高级,将所有者改为自己的账号并禁用继承(从此对象中删除所有已继承的权限),点击确定。

但是感觉图形化操作,各种权限一堆的,导致执行不下去。

所以可以执行命令,亲测可行

In CMD

代码语言:javascript
复制
# 设置 Key 文件变量(路径可以修改):
Set Key="%UserProfile%\.ssh\id_rsa"

# 移除继承:
Icacls %Key% /c /t /Inheritance:d

# 将所有权设置为当前用户:
# Key's within %UserProfile%:
Icacls %Key% /c /t /Grant %UserName%:F

# Key's outside of %UserProfile%:
TakeOwn /F %Key%
Icacls %Key% /c /t /Grant:r %UserName%:F

# 删除除所有者之外的所有用户:
Icacls %Key% /c /t /Remove:g "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users

# 验证:
Icacls %Key%

# 删除变量:
set "Key="

In PowerShell:

代码语言:javascript
复制
# 设置 Key 文件变量(路径可以修改):
New-Variable -Name Key -Value "$env:UserProfile\.ssh\id_rsa"

# 移除继承:
Icacls $Key /c /t /Inheritance:d

# 将所有权设置为当前用户:
# Key's within $env:UserProfile:
Icacls $Key /c /t /Grant ${env:UserName}:F

# Key's outside of $env:UserProfile:
TakeOwn /F $Key
Icacls $Key /c /t /Grant:r ${env:UserName}:F

# 删除除所有者之外的所有用户:
Icacls $Key /c /t /Remove:g Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users

# 验证:
Icacls $Key

# 删除变量:
Remove-Variable -Name Key

错误场景2

代码语言:javascript
复制
Permission denied (publickey)

说白了就是私钥没有生效,我TM明明已经ssh-add了呀

前提

  • 当然已经生成了公钥和私钥,
  • 并且已经在各大平台添加了对应的密钥key,
  • 已经执行了ssh-add(其实是没有生效的)
  • bash 下是没问题的,因为我非要折腾window10自带的 windows terminal

尝试了各种姿势, 但是这个逼,无动于衷...

执行

代码语言:javascript
复制
ssh -vT git@github.com

看到他在尝试使用默认的路径下的私钥:

代码语言:javascript
复制
debug1: Will attempt key: C:\\Users\\chuchur/.ssh/id_rsa
debug1: Will attempt key: C:\\Users\\chuchur/.ssh/id_dsa
debug1: Will attempt key: C:\\Users\\chuchur/.ssh/id_ecdsa
debug1: Will attempt key: C:\\Users\\chuchur/.ssh/id_ed25519
debug1: Will attempt key: C:\\Users\\chuchur/.ssh/id_xmss

没这个习惯都把私钥叫id_rsa这个名字, 通常也不会放在 ~/.ssh目录下 , 但是他默认就在那儿=>C盘,我非要放D盘怎么弄?

解决方法

方案一

老老实实的把私钥名字改成 id_rsa,然后copy 到 ~/.ssh 目录下 ,那我多个私钥,怎么办不可能都叫 id_rsa,

在.ssh 目录下新建 config文件,内容如下

代码语言:javascript
复制
#公司的git地址
Host git.***.com  
User git
Hostname git.***.com  #公司的git地址
IdentityFile ~/.ssh/id_rsa  #访问公司git的SSH KEY
Port   ***  #公司的git端口

Host github.com
User git
Hostname github.com #github的地址
IdentityFile ~/.ssh/id_rsa_github  #访问github的SSH KEY

方案二

解决我非要放D盘,修改系统环境变量 win+R = > sysdm.cpl => Enter => 高级=> 环境变量 => 新建=>

变量名:HOME 变量值:D:\User\chuchur

确定,完成 ,那么你的.ssh 就跑到了D盘。

方案三

ssh-add 之后,切换目录就不行了,在~/ 目录新建文件 .profile, 内容如下:

代码语言:javascript
复制
env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

重启terminal 之后再 ssh-add ,这个时候是全局生效的。

垃圾 windows :(

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/11/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 错误场景1
  • For Mac/Linux
  • For Window
  • 解决办法 (去掉特定权限)
    • In CMD
      • In PowerShell:
      • 错误场景2
        • 前提
          • 解决方法
            • 方案一
            • 方案二
            • 方案三
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档