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

cru*_*her 6 linux security ssh

我正在按照指南为 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 type -1
debug1:身份文件/home/user/.ssh/id_dsa 类型-1
debug1:身份文件/home/user/.ssh/id_dsa-cert type -1
debug1:身份文件/home/user/.ssh/id_ecdsa 类型-1
debug1:身份文件/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: 客户端->服务器 aes128-ctr hmac-sha1 无
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:没有更多的身份验证方法可以尝试。
权限被拒绝(公钥)。

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

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

我已经尝试过的:

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

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


#查看权限
ls -l ~/.ssh
-rw-------。1 个用户 user 1675 Sep 3 09:53 id_rsa
-rw-r--r--。1 个用户 user 381 Jan 23 09:21 id_rsa.pub
-rw-r--r--。1 个用户 user 1371 Jan 23 09:30 known_hosts

#看看/etc/ssh/ssh_conf
主持人 *
    GSSAPI身份验证是
    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
#我觉得还行...

slh*_*hck 9

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

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

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

  • 吹毛求疵,ssh 实际上并不读取 .pub 文件。它只是读取私钥文件。公钥可以从私钥中提取出来。`ssh-keygen` 可以选择读取私钥并输出其公钥。 (4认同)
  • @Kenster:不,它也会读取 .pub 文件——这样它就可以在询问你解密密码之前向服务器查询公共部分。(OpenSSH 需要它,因为整个文件都是加密的。PuTTY 的密钥格式 otoh 不会加密公共部分,因此不需要单独的 .pub 文件。) (2认同)