添加一个id_rsa键打破了我的SSH连接

今天,我已经开始在我的Ubuntu 10.04服务器上设置一个gitolite服务器,我需要用ssh-keygen生成一个公钥/私钥对。

到目前为止没有问题。 我已经在我的Ubuntu 10.10客户端上生成了两个文件(id_rsa&id_rsa.pub),然后将id_rsa.pub密钥传输(复制)到服务器(在/ tmp /),以安装gitolite服务器。

但接下来,当我想通过SSH连接到客户端的服务器,我收到一个错误,看起来像这样:

PTY allocation request failed on channel 0 

search谷歌,我发现的答案是关系到/ etc / fstab。 对我而言,这种做法是毫无意义的。 然后我得到了从我的客户端删除〜/ .ssh / id_rsa和id_rsa.pub的想法,我又能够build立一个SSH连接。

有人解释为什么发生? 我觉得我不明白authentication密钥的一些东西。

Gitolite设置authorized_keys文件的方式,你不会有shell访问服务器。 有几种方法可以解决这个问题:

  1. 你可以设置一个密码login到机器上,除非你使用git,否则不要使用你的SSH密钥。
  2. 您可以生成另一个用于pipe理机器的SSH密钥,这需要您使用ssh -i覆盖login时提供的默认密钥。如果select此路由,请手动添encryption钥(不要使用gitolite) ,并确保您的密钥出现在任何由gitolite添加之前。

基本上,所发生的是devise。 Gitolite不允许任何用户访问服务器的shell,所以(有点令人困惑的)错误信息只是表明它正常工作。

该消息的一个可能的原因是服务器已经超出了可用terminal的数量,因为太多的用户一次连接。 这将是一个短暂的失败,因为连接和断开连接的用户会使ptys的数量饱和和饱和。

另一个可能的原因,可能是适用于你的一个原因是,密钥可能被限制为禁止terminal分配。 这在大多数情况下并不是非常有用,但对于只允许存储而不是一般使用的服务器来说是有意义的,例如git存储。 如果密钥有no-pty标志(检查~/.ssh/authorized_keys的相应行),将无法使用terminallogin。

如果你是一个git服务器上的pipe理员,你可能想要一个没有限制的密钥。 只需运行没有-Ossh-copy-id ssh-keygen来安装没有限制的密钥。 对于在服务器上只运行git的普通用户使用受限密钥。

这个错误看起来不是一个关键问题,其他的东西很可能在你的ssh服务器configuration中被破坏。 你有没有在服务器上重新启动sshd? 你能够从控制台login吗? 如何从另一台机器sshing?