我在Windows 7上使用git时遇到了这个非常奇怪的问题。我已经安装了msysgit,生成了ssh密钥,并在我的Ubuntu机器上添加了id_rsa.pub到authorized_keys。如果我打开git bash shell并尝试ssh到服务器,它会提示输入密码。但是我希望它能使用密钥,而不是提示输入密码。现在,如果我首先打开一个到Ubuntu机器的ssh连接(通过putty)并登录,然后返回到git bash shell,服务器接受没有密码的密钥连接。
关于可能导致此连接怪异的任何想法?
连接到服务器而没有与服务器的其他ssh连接:
$ ssh -v jeremy@192.168.1.248
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /c/Users/Jeremy/.ssh/config
debug1: Connecting to 192.168.1.248 [192.168.1.248] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Jeremy/.ssh/identity type -1
debug1: identity file /c/Users/Jeremy/.ssh/id_rsa type 1
debug1: identity file /c/Users/Jeremy/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-6ubuntu2
debug1: match: OpenSSH_5.1p1 Debian-6ubuntu2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.1.248' is known and matches the RSA host key.
debug1: Found key in /c/Users/Jeremy/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Jeremy/.ssh/identity
debug1: Offering public key: /c/Users/Jeremy/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /c/Users/Jeremy/.ssh/id_dsa
debug1: Next authentication method: password
jeremy@192.168.1.248's password:
通过putty打开与服务器的ssh连接后连接到服务器:
$ ssh -v jeremy@192.168.1.248
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /c/Users/Jeremy/.ssh/config
debug1: Connecting to 192.168.1.248 [192.168.1.248] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Jeremy/.ssh/identity type -1
debug1: identity file /c/Users/Jeremy/.ssh/id_rsa type 1
debug1: identity file /c/Users/Jeremy/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-6ubuntu2
debug1: match: OpenSSH_5.1p1 Debian-6ubuntu2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.1.248' is known and matches the RSA host key.
debug1: Found key in /c/Users/Jeremy/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Jeremy/.ssh/identity
debug1: Offering public key: /c/Users/Jeremy/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
Linux curious 2.6.31-23-generic #74-Ubuntu SMP Mon Feb 28 22:20:11 UTC 2011 x86_
64
To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
答案 0 :(得分:3)
我遇到了类似的问题,只是尝试ssh到我的服务器,而不是git相关。实际问题是服务器上的主目录是加密的。因此,除非用户已经登录,否则不会挂载带有authorized_keys文件的加密目录,因此sshd无法访问该目录。如果用户已打开会话,则会挂载目录,并且ssh按预期运行。
以下是这种情况的官方Ubuntu帮助: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting
以下是我使用的解决方案: https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/362427/comments/12
我从这个帖子中得到了这两个: https://superuser.com/questions/61057/ssh-with-authorized-keys-to-an-ubuntu-system-with-encrypted-homedir
答案 1 :(得分:1)
我的直接怀疑是,它正在寻找一个身份验证代理,但未能找到一个,然后由于某种原因无法运行ssh-askpass
来解锁您的私钥。但是如果你启动Putty,它会启动代理并正确设置它,然后命令行ssh
可以使用它来获取你的私钥。