mme*_*nik 8 git ssh cygwin ssh-agent
尝试将Git与Cygwin一起使用时遇到问题.我已经生成并添加了ssh密钥到GitLab服务器,一切都可以正常通过MINGW64(克隆,拉动等),但我想使用Cygwin并发现它不起作用.
虽然我已将生成的密钥的副本放到〜/ user/.ssh文件夹并手动添加密钥,但"ssh-add -l"会将其打印在列表中,但是当我尝试获取存储库(或任何其他服务器)时命令)我得到:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
它看起来像一个bug,但可能我做错了什么.有没有人遇到这个问题?谢谢.
更新:在Cygwin中更新OpenSSH版本后,问题已经消失.
对我来说,原因是我将 ssh 密钥文件放入C:\Users\username\.ssh(/cygdrive/c/Users/username/.ssh在 cygwin 中),但实际上,您需要放入 ssh 密钥~/.ssh才能使其工作。它们是两个不同的目录。
在 cygwin 中运行以下命令解决了我的问题。
cp /cygdrive/c/Users/username/.ssh/* ~/.ssh/
Run Code Online (Sandbox Code Playgroud)
请注意,您应该username用实际的替换。
代理不必只是运行,但您的工具必须知道代理在哪里侦听。它存储在变量中$SSH_AUTH_SOCK,如果它在一个终端上适用于您,则不必在第二个终端上工作。
如果您想让它在 NetBeans 中工作,您需要将此变量注入到 NetBeans 环境变量中(但不确定如何执行此操作,以便将其从 Windows 环境传递到 NetBeans 中的 Cygwin 终端)。
或者稍后将其注入正在运行的终端(可能使用.bashrc或其他启动脚本)。简单的测试用例是echo $SSH_AUTH_SOCK在 MinGW 终端中,然后写入export SSH_AUTH_SOCK=/the/path/you/got/from/previous/commandCygwin 终端。
稍后您可以通过将变量存储到某个文件中来自动化它,您可以在 Cygwin 中读取该文件。
# MinGW scriplet
echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> ~/agent_env
# Cygwin scriplet
. ~/agent_env
Run Code Online (Sandbox Code Playgroud)
然后您应该能够从 cygwin shell 使用 mingw 代理。
| 归档时间: |
|
| 查看次数: |
3654 次 |
| 最近记录: |