在我自己的电脑上运行MacOSX,我在〜/ .ssh / config中有这个
Host * ForwardAgent yes Host b1 ForwardAgent yes
b1是运行Ubuntu 12.04的虚拟机。 我喜欢这样ssh:
ssh pupeno@b1
我没有被要求input密码而login,因为我已经复制了我的公钥。 由于转发,我应该能够从b1 ssh到pupeno @ b1,它应该工作,而不要求我的密码,但它不。 它要求我input密码。
我错过了什么?
这是第二个ssh的详细输出:
pupeno@b1:~$ ssh -v pupeno@b1 OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to b1 [127.0.1.1] port 22. debug1: Connection established. debug1: identity file /home/pupeno/.ssh/id_rsa type -1 debug1: identity file /home/pupeno/.ssh/id_rsa-cert type -1 debug1: identity file /home/pupeno/.ssh/id_dsa type -1 debug1: identity file /home/pupeno/.ssh/id_dsa-cert type -1 debug1: identity file /home/pupeno/.ssh/id_ecdsa type -1 debug1: identity file /home/pupeno/.ssh/id_ecdsa-cert type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1 debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: sending SSH2_MSG_KEX_ECDH_INIT debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ECDSA 35:c0:7f:24:43:06:df:a0:bc:a7:34:4b:da:ff:66:eb debug1: Host 'b1' is known and matches the ECDSA host key. debug1: Found key in /home/pupeno/.ssh/known_hosts:1 debug1: ssh_ecdsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server 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: /home/pupeno/.ssh/id_rsa debug1: Trying private key: /home/pupeno/.ssh/id_dsa debug1: Trying private key: /home/pupeno/.ssh/id_ecdsa debug1: Next authentication method: password pupeno@b1's password:
事实certificate,我的钥匙不是在代理人,这固定它:
OS X :
ssh-add -K
Linux / Unix :
ssh-add -k
您可以使用以下列出加载的密钥
ssh-add -l
由于/ tmp中没有剩余空间,因此sshd服务器拒绝代理转发请求时出现问题。 这是因为sshd需要在/ tmp中创build套接字。 清理磁盘解决了我的问题。
当时ssh -v说:
debug1: Remote: Agent forwarding disabled: mkdtemp() failed: No space left on device
检查您的./ssh/id_rsa .ssh/id_dsa
.ssh/id_ecdsa
文件是否具有您的用户拥有的正确权限,并且是chmoded 600。
检查b1上的pupeno/.ssh/authorized_keys
上是否有正确的pupeno/.ssh/authorized_keys
,并检查authorized_keys
是否在密钥末尾有换行符。
检查你是否正在运行ssh-agent,尝试通过ssh-add
加载密钥
使用ssh -K
尝试基于GSSAPI的身份validation和转发
对于也来到这个问题的其他谷歌的好处:
〜/ .ssh / config文件中的空白不正确也会导致一些头部刮擦。
我最近帮助了一位有我这样的同事:
# incorrect host foobar ForwardAgent yes
而不是这个:
# correct host foobar ForwardAgent yes
我也遇到了这样的情况,即在主机列表下缺less指令的缩进对function有所不同,即使它不应该。
另一个可能的原因是连接共享:可能已经在另一个主机上login,而没有启用代理转发和连接共享。 用ssh -A
(或者在configuration文件中等价地指定)通过共享连接进行的第二次login将默默地忽略-A
标志。 只有在完全注销或禁用第二次login的连接共享之后,代理转发才能工作。
将以下行添加到.ssh / config文件
Host **Server_Address** ForwardAgent yes
将密钥添加到SSH代理
ssh-add -K
连接到远程服务器
ssh -v **username**@**Server_Address**
对GitHub运行连接testing
ssh -T [email protected]
对目标git存储库运行ls远程testing
git ls-remote --heads [email protected]:**account**/**repo**.git