当我学习git时,我在GitHub上建立了一个私人存储库。我创建了ssh密钥并将其存储到我的GitHub帐户并在我的本地Linux机器上编辑了.ssh / config文件:
## github
Host github.com
User git
HostName github.com
IdentityFile ~/.ssh/github.key
我可以成功连接到我的GitHub帐户:
$ ssh -T github
Hi <UserName>! You've successfully authenticated, but GitHub does not provide shell access.
我在本地计算机上初始化了一个git存储库,设置了用户并添加了一个远程存储库:
$ git init
$ git config user.name "UserName"
$ git config user.email "UserEmail"
$ git remote add origin ssh://github:<UserName?/<repositoryName>.git
我创建了一个README.md
文件,将其添加到git并提交它:
$ git add README.md
$ git commit -m "First commit."
现在每当我尝试推动时,我都会收到此错误:
$ git push origin master
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
克隆存储库是可行的,但这是我唯一能做的事情。
为什么我无法推送到我的私人存储库?我做错了什么?
答案 0 :(得分:3)
请尝试使用scp syntax,以确保使用~/.ssh/config
文件:
git remote set-url origin github:<username>/<repo>
然后再试一次。
Git本身使用OpenSSH版本(至少包含Git for Windows的一个包)
> ssh -V
OpenSSH_7.5p1, OpenSSL 1.0.2k 26 Jan 2017
如“Why doesn't the ssh command follow RFC on URI?”中所述,不同之处是:
ssh://[user@]host.xz[:port]/path/to/repo.git
vs.
user@host.xz:/path/to/repo.git
只有后一种语法user@host.xz:
使用ssh config file。
最初开发SSH时,它是作为早期RSH / rlogin工具套件的更安全,直接替代品而开发的。
请参阅“History of the SSH protocol”。
OpenSSH(1999)早于URI(于RFC 3986定稿,于2005年1月发布)
如果允许主机部分位于
host:port
表单上,则会产生潜在的歧义:jdoe@host.example.com:2222
在连接时~jdoe/2222
引用host.example.com
标准端口,或者当通过端口2222连接时,它是指~jdoe
上没有文件(或更糟,host.example.com
)?