git ssh Permission denied

2 篇文章 0 订阅

生成SSH KEY

按照步骤生成ssh key

$ ssh-keygen -t rsa -C "your@email.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/savepath/.ssh/id_rsa): /savepath/.ssh/test
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /savepath/.ssh/test.
Your public key has been saved in /savepath/.ssh/test.pub.
The key fingerprint is:
SHA256:s+pP6bI+hOAxGISlhDoobOQAXcyhqSzFCdBFMNCN4+s your@email.com
The key's randomart image is:
+---[RSA 2048]----+
|@O+X=.           |
|*=*=+            |
|O+*.             |
|B*=              |
|=+ = .  S        |
|. o . .  +       |
| .   .  +        |
|  E   o+         |
|     o==o        |
+----[SHA256]-----+

上面的保存地址写绝对物理路径。savepath = ~。
生成两个文件:
1. 私钥:/savepath/.ssh/test
2. 公钥:/savepath/.ssh/test.pub
密码可以为空。

SSH连接

然后将公钥加入github,测试ssh连接。

$ ssh -T git@github.com
Permission denied (publickey).

遇到Permission denied。
查看详细连接步骤:

debug1: Trying private key: /savepath/.ssh/id_rsa
debug1: Trying private key: /savepath/id_dsa
debug1: Trying private key: /savepath/id_ecdsa
debug1: Trying private key: /savepath/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

由于我生成的key名称没有写成默认的id_rsa,所以系统找不到我的私钥。生成的test并没有被使用。

网上给出的解决方案:

$ eval `ssh-agent -s`
Agent pid 4836

$ ssh-add ~/.ssh/testapps
Identity added: /savepath/.ssh/testapps (/savepath/.ssh/testapps)

测试ssh连接:

Hi gt199899/testapps! You've successfully authenticated, but GitHub does not pro                                                   vide shell access.
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 3080, received 1784 bytes, in 0.7 seconds
Bytes per second: sent 4702.0, received 2723.5
debug1: Exit status 1

ssh连接成功,但是如果重新打开一个git bash,或者将这个git bash关闭掉,再测试ssh连接,发现仍然是Permission denied。

上面打开ssh-agent的时候,返回一个4836的pid号,我们查看windows的pid,可以看到如下:
这里写图片描述
这里这个进程当作用的git bash窗口关闭掉的时候就会关闭,并且仅作用于启动这个进程的git bash窗口。

配置ssh config

我们不可能每次连接ssh的时候,都去执行下ssh-agent命令,持久化得配置就是ssh config。
在~/.ssh/里面新增config文件。
文件内容如下:

# Github
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/test

部署设置规则
Host:本地名称,自定义
Hostname:服务器地址
IdentityFile:私钥路径

然后重新打开一个git bash,测试SSH连接

$ ssh -T git@github.com
Hi gt199899/testapps! You've successfully authenticated, but GitHub does not provide shell access.

SSH连接成功,并且是持久化配置。

备注

ssh-agent 命令:http://man.linuxde.net/ssh-agent
ssh-add 命令:http://man.linuxde.net/ssh-add

ssh-agent命令是一个ssh中保存私钥的一个程序,启动之后,可以使用ssh-add给程序添加私钥,如果私钥有密码,也会将密码同时保存到程序中。但是这个程序在windows中是一个和git bash窗口绑定的,仅能作用于这个窗口,当窗口关闭的时候,程序就关闭了,下次就要重新启动ssh-agent。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值