我正在尝试将我在 git 上的项目从我的本地 Windows PC 推送到我的远程 Linux 服务器。
当我使用 PuTTY 时,通过 SSH 连接到我的服务器没有任何问题。但 PuTTY 仅适用于远程服务器,不允许我查看我自己的本地电脑 - 所以我无法访问我的 git 存储库以从中推送。
相反,我一直在尝试使用 Git Bash,在那里我转到我的 git 项目的存储库(master),然后尝试“git push production master”。在 Git Bash 中收到“权限被拒绝(公钥)”作为响应。
我已经使用 PuTTYgen 从本地 pc 上的 user/.ssh 文件夹中通过私钥加载,将它显示的公钥复制/粘贴到我的 Github 帐户的 SSH key 中。 这与我用于连接 PuTTY(有效)的 key 相同。
如果我在 Git Bash 中使用“git remote -v”,我会收到服务器的正确 url: “ 生产 ssh://notacop@mafiauniversedata.com/var/repo/site.git(获取) 生产 ssh://notacop@mafiauniversedata.com/var/repo/site.git(推送) "
“notacop”是我创建的管理员用户而不是 root,这也是我在 PuTTY 中使用的用户。
如果我在 Git Bash 中尝试“ssh notacop@mafiauniversedata.com”,我也会收到“权限被拒绝(公钥)”响应。因此,问题似乎与 Git Bash 使用的公钥有关,因为它根本无法连接。
我的 user/.ssh 文件夹包含: digitalocean_private_key(PuTTY 使用的/PuTTYgen 生成的)+ digitalocean_public_key
github_rsa + github_rsa.pub
id_rsa + id_rsa.pub
已知主机
我觉得我已经按照一般指南设置了一些东西,而且它在 PuTTY 中确实有效,所以这个问题一定与 Git Bash 以及 Git Bash 如何建立 ssh 连接有关。
但是我对如何解决这个问题一无所知,一直无法通过搜索找到解决方案。我的猜测是它相当简单,但我已经坚持了几个星期了,因此一无所获。
任何能引导我走向正确方向的答案都将不胜感激! 如果我的问题有任何不清楚的地方,或者您需要更多信息来回答,请告诉我。
最佳答案
我不知道为什么 Git Bash 自带的 ssh
似乎对你不起作用,
但我有一个更好的建议:让 Git Bash 使用 PuTTY,方法是将 GIT_SSH
环境变量设置为 plink.exe
的路径(这不是拼写错误,它不是 putty.exe
,但 PuTTY 工具的 zip 附带的另一个可执行文件)。
这样做的主要优势和原因是 Git Bash 可以从 PuTTY 的 key 管理器 pagent.exe
中获益。
这样您就可以输入一次密码,
将您的私钥添加到 Paget 时,
然后你就不需要每次在 Git Bash 中执行远程操作时都重新输入。
关于linux - 如何使用正确的 SSH key 从 Windows 上的 Git Bash 连接到远程服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44366873/