运行Windows 8.1 64位,并安装以下设备:
- Git for Bash(v2.24.1.windows.2)使用MinGW-W 64
- Visual Studio Code(v1.41.1)
我的个人SSH密钥(位于%USERPROFILE%\.ssh
)已经生成并添加到我的GitHub帐户。位于%USERPROFILE
的.bashrc
已被修改,以添加以下行:
# Start ssh-agent to allow git to be used
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa_personal
我在git repo中启动了Git Bash(MINGW 64)。现在修改一个文件,git add
,git commit
和git push
,修改我的git存储库...它工作得很好!
对于标准的Windows命令提示符,我用以下代码创建了一个名为bashrc.cmd
的文件:
rem Start ssh-agent to use git from the Windows command line
set GIT_PATH=C:\Program Files\Git
call "%GIT_PATH%\cmd\start-ssh-agent.cmd"
call "%GIT_PATH%\usr\bin\ssh-add.exe" "%USERPROFILE%\.ssh\id_rsa_personal"
现在,在键HKLM\SOFTWARE\Microsoft\Command Processor
中创建了一个名为AutoRun
的新REG_SZ
值,该值指向上述文件(bashrc.cmd
)
启动一个命令提示符,现在启动了ssh-agent
,并添加了我的身份。与Git Bash一样,add
、commit
和push
可以完美地工作。太棒了!
现在我在git repo中加载Visual Studio代码。在左下角,Code知道我在一个git repo中:
在Code中使用内置的Terminal,我可以将add
,commit
和push
更改到我的git repo中。太好了!
但现在我尝试用用户界面按钮。我可以使用git status
暂存和提交更改,并在单独的命令行窗口中确认这些更改是否按预期工作。但是当我使用Push
命令时,我得到这个错误:
返回到代码终端,或Windows命令提示符,或Git Bash,发出命令git push
,更改将正确发送到远程存储库。
为什么代码Push
命令不起作用?
5条答案
按热度按时间p4tfgftt1#
经过一些努力,我发现同样的错误在我的Visual Studio代码,甚至当我试图使用
ctrl+shift+p
和git:pull
命令也给了我同样的错误描述Permission Denied(publickey)
我读了here,那个
Seems VS Code uses 'id_rsa.pub' key only
,我有不同的密钥对名称,然后我复制私钥和公钥,这是为git仓库设置的id_rsa和id_rsa.pub,我再次尝试检查图标以及菜单,它工作时没有添加到ssh-agent
,因为它只搜索~/.ssh/id_rsa在您的配置文件目录。当我删除id_rsa时,它给了我同样的错误,终端按预期工作,使用已经添加到ssh-agent中的不同密钥名称。另外,
git add .
和git commit -m
是适用于本地的命令,不与远程分支建立连接,但当您尝试fetch
,pull
,push
尝试连接到需要身份验证的远程存储库时。vatpfxk52#
当密钥受密码短语保护时也会发生此问题。重新生成另一个没有密码的密钥解决了我的问题。
6vl6ewon3#
我能够在我的mac位上使用iterm而不是通过vs代码推送更改。因此,正如上面的一个用户建议的那样,没有密码的密钥可能会起作用。我试过了,它确实有效。我不需要创建一个新的密钥。我用这个更新了密码。ssh-keygen -p -f /path/to/ssh_key
您的
ssh key
是没有.pub
扩展名的。dy2hfwbg4#
切换我的Github帐户并生成新的SSH密钥后。我可以从终端上下载。但是VSCode和IntelliJ不能。好像是用我以前的证件。
在两个终端上运行
eval "$(ssh-agent -s)"
对我来说都很有用。4uqofj5v5#
RSA密钥的名称是它发生的确切原因。远程主机上所需的密钥文件名必须为
~/.ssh/id_rsa
。查看最新版本。