添加 id_rsa 密钥导致我的 ssh 连接中断

添加 id_rsa 密钥导致我的 ssh 连接中断

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

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

但接下来,当我想从客户端通过 SSH 连接到服务器时,我收到了如下错误:

PTY allocation request failed on channel 0 

在谷歌上搜索,我找到的答案与 /etc/fstab 有关。这对我来说毫无意义。然后我想到从我的客户端中删除 ~/.ssh/id_rsa 和 id_rsa.pub 密钥,然后我又能够建立 SSH 连接了。

有人能解释一下为什么会发生这种情况吗?我觉得我不太了解身份验证密钥。

答案1

Gitolite 设置 authorized_keys 文件的方式使得您无法通过 shell 访问服务器。有几种方法可以解决这个问题:

  1. 您可以设置密码登录机器,并且除使用 git 时外,不要使用 SSH 密钥。
  2. 您可以生成另一个 SSH 密钥来管理机器,这需要您使用 ssh -i 来覆盖登录时提供的默认密钥。如果您选择此路线,请添加您的密钥手动(不要使用 gitolite),并确保您的密钥出现在 gitolite 添加的任何密钥之前。

基本上,发生的事情是设计使然。Gitolite 不允许任何用户获得对服务器的 shell 访问权限,因此(有点令人困惑的)错误消息只是表明它工作正常。

答案2

出现该消息的一个可能原因是服务器已达到可用终端数上限,因为同时连接的用户太多。这可能是暂时性故障,因为用户连接和断开连接会导致 pty 数量饱和和下降。

另一个可能的原因(可能适用于您)是可以限制密钥以禁止终端分配。这在大多数情况下并不是很有用,但对于仅允许存储而不允许一般使用的服务器(例如 git 存储)来说很有意义。如果密钥有标志no-pty(检查~/.ssh/authorized_keys),您将无法使用终端登录。

如果您是 git 服务器上的管理员,您可能希望拥有一个不受限制的密钥。只需运行ssh-keygenwithout-O即可ssh-copy-id安装不受限制的密钥。对于在服务器上只运行 git 的普通用户,请使用受限制的密钥。

答案3

该错误看起来不像是关键问题,您的 ssh 服务器配置可能有其他问题。您是否在服务器上重新启动了 sshd?您是否能够从控制台登录?从另一台机器进行 ssh 怎么样?

相关内容