我正在尝试使用本教程在我的服务器上设置 git 远程存储库: http://toroid.org/ams/git-website-howto
但是当我尝试推送到服务器时,出现此错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
因此,似乎由于某些身份验证密钥问题,git 无法通过 SSH 连接到服务器。ssh aws1
由于设置了我的 ssh 配置文件,我可以使用 SSH 从终端顺利连接到服务器。
~/.ssh/config 文件:
Host aws1
HostName 54.235.193.228
User ubuntu
IdentityFile ~/.ssh/ec2_key.pem
我用来添加远程和推送的 git 命令:
git remote add web ssh://54.235.193.228/home/ubuntu/somedirectory.git
git push web +master:refs/heads/master
我认为我的问题是我不太理解如何使用 ssh 密钥对。教程说:
“我假设该网站将位于您具有 ssh 访问权限的服务器上,并且已设置好一切,以便您无需输入密码即可通过 ssh 访问该网站(即,您的公钥位于 ~/.ssh/authorized_keys 中,并且您正在本地运行 ssh-agent)。”
我不知道 ssh-agent 是什么,我的机器上甚至没有 authorized_keys 文件(我有一个名为 known_hosts 的文件)。我以为使用 ssh 配置文件就足够了,因为它允许我无需密码即可从终端进行 ssh 连接,但显然这是不正确的。我做错了什么?
服务器:EC2实例,Ubuntu 12.04,AWS弹性IP
开发机器:OS X 10.7.5,zsh shell
答案1
为什么不直接aws1
在远程使用?这样,您可以重复使用 .ssh/config 配置aws1
:
git remote add web ssh://aws1/home/ubuntu/somedirectory.git
Git 使用ssh
命令来连接,因此适用于ssh
命令的一切都适用于 Git。
否则,您将需要指定远程 URL、用户,如。并且由于无法指定应使用哪个私钥,因此无论如何您都需要对其进行配置。ssh://[email protected]/...
.ssh/config