我刚刚发送了私人ssh密钥吗?


6

我按照指南为git设置了ssh 。我之前在另一个系统上成功使用了密钥,期待它现在也能正常工作我测试了它:
ssh -v -T git@github.com
并收到以下内容:

OpenSSH_6.4,OpenSSL 1.0.1e-fips 2013年2月11日
debug1:读取配置数据/ etc / ssh / ssh_config
debug1:/ etc / ssh / ssh_config第51行:应用*的选项
debug1:连接到github.com [192.30.252.131]端口22。
debug1:已建立连接。
debug1:身份文件/home/user/.ssh/id_rsa类型1
debug1:身份文件/home/user/.ssh/id_rsa-cert类型-1
debug1:身份文件/home/user/.ssh/id_dsa类型-1
debug1:身份文件/home/user/.ssh/id_dsa-cert类型-1
debug1:身份文件/home/user/.ssh/id_ecdsa类型-1
debug1:identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1:为协议2.0启用兼容模式
debug1:本地版本字符串SSH-2.0-OpenSSH_6.4
debug1:远程协议版本2.0,远程软件版本libssh-0.6.0
debug1:不匹配:libssh-0.6.0
debug1:发送SSH2_MSG_KEXINIT
debug1:收到SSH2_MSG_KEXINIT
debug1:kex:server-> client aes128-ctr hmac-sha1 none
debug1:kex:client-> server aes128-ctr hmac-sha1 none
debug1:发送SSH2_MSG_KEX_ECDH_INIT
debug1:期待SSH2_MSG_KEX_ECDH_REPLY
debug1:服务器主机密钥:RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1:主机'github.com'已知并与RSA主机密钥匹配。
debug1:找到/home/user/.ssh/known_hosts:1中的密钥
debug1:ssh_rsa_verify:签名正确
debug1:发送SSH2_MSG_NEWKEYS
debug1:期待SSH2_MSG_NEWKEYS
debug1:收到SSH2_MSG_NEWKEYS
debug1:服务器不允许漫游
debug1:发送SSH2_MSG_SERVICE_REQUEST
debug1:收到SSH2_MSG_SERVICE_ACCEPT
debug1:可以继续的身份验证:publickey
debug1:下一个身份验证方法:publickey
debug1:提供RSA公钥:/home/user/.ssh/id_rsa
debug1:可以继续的身份验证:publickey
debug1:尝试私钥:/home/user/.ssh/id_dsa
debug1:尝试私钥:/home/user/.ssh/id_ecdsa
debug1:没有更多的身份验证方法可以尝试。
权限被拒绝(publickey)。

除了显而易见的Permission denied (publickey),看起来ssh无法区分私钥id_rsa和公钥id_rsa.pub。两者都在/home/user/.ssh/

所以我只是将我的私钥发送到git@github.com?

我已经尝试过的:

#Cate新的公钥
ssh-keygen -y -f~ / .ssh / id_rsa>〜/ ssh / id_rsa.pub

#id已添加
ssh-add -l
2048 == numbers == home / user / .ssh / id_rsa(RSA)


#检查权限
ls -l~ / .ssh
-rw -------。1位用户1675 Sep 3 09:53 id_rsa
-rw-R  -  R--。1位用户381 Jan 23 09:21 id_rsa.pub
-rw-R  -  R--。1位用户1371年1月23日09:30 known_hosts

#看看/ etc / ssh / ssh_conf
主持人*
    GSSAPIAuthentication是的
    ForwardX11Trusted是的
    SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    SendEnv XMODIFIERS
        ServerAliveInterval 300 
    ServerAliveCountMax 2
#Looks好我...

Answers:


7

不,您没有发送私钥。SSH在这里做的只是按名称对公钥和私钥进行分组。例如,id_rsa指的是密钥对id_rsaid_rsa.pub

“提供公钥”意味着它将您发送id_rsa.pub到服务器。然后,服务器使用公钥生成加密的身份验证令牌。

当它说“尝试私钥”时,它将尝试使用相应的私钥解密该身份验证令牌,并将其发送回服务器进行验证。


谢谢!我发现很难相信ssh会自己这样做。现在这意味着Permission denied (publickey).错误不是由ssh发送错误的密钥引起的,而是通常的原因之一。
crunsher 2015年

是的,它可能是权限或通常的嫌疑人之一:)
slhck 2015年

3
为了挑剔,ssh实际上并没有读取.pub文件。它只读取私钥文件。可以从私钥中提取公钥。ssh-keygen可以选择读取私钥并输出其公钥。
肯斯特2015年

2
@Kenster:不,它确实也读取了.pub文件 - 这样它就可以向服务器查询公共部分,然后再向你询问解密密码。(OpenSSH需要这个,因为整个文件都是加密的.PuTTY的密钥格式,otoh,不加密公共一半,因此不需要单独的.pub文件。)
grawity
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.