当我推送到有效的SSH地址时,为什么不能解析主机名?

时间:2013-01-03 03:04:10

标签: git heroku ssh ssh-keys git-remote

我正在Heroku上部署一个应用程序,所以我从一个repo创建了一个Heroku应用程序然后git push heroku master。当我这样做时,它一直给我错误:

!  Your key with fingerprint xxx is not authorized to access heroku-app.

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我尝试了各种更改SSH密钥的方法,包括删除所有密钥并创建新密钥。它仍然给我同样的错误。我已将密钥添加到Heroku。

然后我尝试运行ssh -vT git@heroku.com:heroku-app.git,结果是:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
ssh: Could not resolve hostname heroku.com:heroku-app.git: nodename nor servname provided, or not known

我无法弄清楚该错误指向的是什么。主机名绝对有效。我可能在SSH配置文件中没有我需要的东西吗?任何想法都会很棒,因为我今天花了很多时间试图让这个工作无济于事。

2 个答案:

答案 0 :(得分:9)

git@heroku.com:heroku-app.git是此ssh地址的SCP format

它依赖于带有“heroku.com”条目的~/.ssh/config文件,该条目指定用户,实际主机名以及私钥/公钥路径(如果需要)。

host heroku.com
     user git
     hostname heroku.com
     identityfile ~/.ssh/yourPrivateKey

再次说明:“heroku.com”中的heroku.com:heroku-app.git 是主机名:它是ssh配置文件中的一个条目。
如果您在heroku.com文件中有xxx条目,则可以将xxx替换为git push xxx:heroku-app.git~/.ssh/config

答案 1 :(得分:0)

它也很简单:

  1. $ heroku login
  2. $ heroku git:clone -a appname(这条线就在这里为我解决了)
  3. $ git add。
  4. $ git commit -am“make it better”
  5. $ git push heroku master
  6. 确认$ heroku git:remote -a appname(heroku和git之间没有名称冲突)