无法在 Windows 上使用 Git bash 进行 ssh - 权限被拒绝(公钥)
Posted
技术标签:
【中文标题】无法在 Windows 上使用 Git bash 进行 ssh - 权限被拒绝(公钥)【英文标题】:Unable to ssh with Git bash on Windows - Permission denied (publickey) 【发布时间】:2019-03-21 07:10:18 【问题描述】:我无法通过 ssh 连接到 digitalocean 上的服务器。我已经在我想要访问的服务器上添加了公钥。我正在为 Windows 使用 Git。使用 Windows 7。我在 GIT 的 ssh_config 文件中禁用了 StrictHostKeyChecking。 ssh 代理正在运行。还使用 ssh-add 命令将密钥添加到代理,它正确显示了我的私钥。我的私钥名称是 ct_devops 而不是 id_rsa,是这个问题吗? 请在下面找到 ssh -vT "hostname" 命令的输出:
OpenSSH_7.7p1, OpenSSL 1.0.2p 14 Aug 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to qa-baseversion.cxmweb.com [178.128.78.198] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_ed25519-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_xmss type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/justinxa/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.7
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1 Debian-5+deb8u4
debug1: match: OpenSSH_6.7p1 Debian-5+deb8u4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to qa-baseversion.cxmweb.com:22 as 'JustinXa'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:OZBnpQ0IJBFGJH0tqPuNb9GnkjDPEZ1O2lvMs07imMo
debug1: Host 'qa-baseversion.cxmweb.com' is known and matches the ECDSA host key.
debug1: Found key in /c/Users/justinxa/.ssh/known_hosts:6
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:pVj+83I7wVJ7LF2mB5IVNDXbfXdyGYh7Cvh/9HRePGY JustinXa@CSSLLAPTOP-148
debug1: Authentications that can continue: publickey
debug1: Trying private key: /c/Users/justinxa/.ssh/id_rsa
debug1: Trying private key: /c/Users/justinxa/.ssh/id_dsa
debug1: Trying private key: /c/Users/justinxa/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/justinxa/.ssh/id_ed25519
debug1: Trying private key: /c/Users/justinxa/.ssh/id_xmss
debug1: No more authentication methods to try.
JustinXa@qa-baseversion.cxmweb.com Permission denied (publickey).
有人可以帮助确定需要做什么或我做错了什么吗? 我检查了其他答案并尝试了所有可能性,但仍然无法正常工作。
【问题讨论】:
我带着类似的问题来到这里,但你认为-i
标志会有所帮助。您可以定义 ssh 应该使用的密钥,例如:ssh -vT -i c:\Users\me\.ssh\ct_devops git@github.com
【参考方案1】:
我只在 Linux 和 OS X 上对此进行了测试,但违反直觉的答案是这样的(先解释解决方案,然后解释它的工作原理):
使用 -i。我不知道 Windows 的确切语法差异,但在 *nix 系统上我会这样做:
ssh -i /path/to/publickey root@dropletip
将 root ssh 密钥复制到您要登录的用户:
cp ~/.ssh/. /home/my user/.ssh get
重启 ssh 守护进程(这取决于远程服务器上的 Linux 发行版)
理论上,这是可行的,因为 root 帐户已使用正确的 ssh 密钥凭据设置(假设您在制作 droplet 时正确设置了它们)。您的新用户帐户没有。
现在,您的问题并不完全清楚您尝试 ssh-ing 的用户身份。必须有一个,并且您首先需要以 root 身份进行操作,而不仅仅是创建一个非 root 用户。还有一些其他潜在问题:
-
您对本地密钥的权限可能过于开放。在 Windows 上解决此问题的一些想法位于 this *** page,尽管我没有亲自尝试通过 SSH 连接到具有 ssh 密钥身份验证的 Windows 的 droplet。
这取决于但我注意到 SSH-keygen 的“注释字段”倾向于使用您的用户名和本地主机名填充公钥的末尾。我有时注意到,如果您创建一个公钥并确保您有一个将注释设置为 root@yourDroplet 而另一个设置为 yourNewUser@yourDroplet,这可能会更顺利;官方文档说评论字段被忽略了。
【讨论】:
以上是关于无法在 Windows 上使用 Git bash 进行 ssh - 权限被拒绝(公钥)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 上的 Git Bash 中退出“git diff”的结果? [复制]
在 Git Bash 的 Windows 安装中更改 ~ 目录的位置