我正在尝试让 gitosis 在 EC2 上的 Ubuntu 实例上运行。我在获取正确的密钥方面遇到了问题。
我使用 AWS 控制台提供的密钥通过 SSH 连接到我的服务器:这是一个公钥(使用 SSH IdentityFile 选项)。一切都很标准。我使用的是官方的 Ubuntu 10.04 AMI。
gitosis 的安装会创建一个新用户。我应该从本地机器提供一个公钥。但这行不通。我收到“权限被拒绝(公钥)”的提示。
为了解决这个问题,我尝试使用服务器上的私钥来初始化存储库或将公钥添加到创建者的授权密钥中。我设法向前迈了一步,但在尝试克隆管理存储库时,我得到了“致命错误:'gitosis-admin.git' 似乎不是 git 存储库”。
更新:
我发现问题发生是因为我在 .ssh/config 文件中为我的服务器指定了一个 IdentityFile。当我删除它时,克隆成功了。但是,现在每次我尝试从终端通过 SSH 进入服务器时,我都需要指定它。有办法解决这个问题吗?
答案1
我发现问题发生是因为我在 .ssh/config 文件中为我的服务器指定了一个 IdentityFile。当我删除它时,克隆成功了。但是,现在每次我尝试从终端通过 SSH 进入服务器时,我都需要指定它。有办法解决这个问题吗?
一对夫妇。
您可以将两个密钥都加载到 SSH 代理中,并且在需要时都会使用它们。
在 Ubuntu 中,应该已经有一个正在运行,因此只需
ssh-add
在两个密钥文件上运行即可。(事实上,GNOME Keyring 组件似乎会~/.ssh/id_*
在登录时自动加载。)您可以有两个
Host
定义~/.ssh/config
:一个用于交互使用,一个用于 Git。Host mybox Hostname foo.domain.tld IdentityFile ~/.ssh/ec2-key Host mybox-git Hostname foo.domain.tld git clone git@mybox-git:gitosis-admin.git
在某些情况下,Gitosis 是不必要的——
git
无需任何特殊配置即可通过 SSH 进行推送和拉取。(尽管 Gitosis 在多用户情况下确实有助于授权。)