按照以下说明将 Gitolite 安装到我的 Synology DiskStation NAS 上后: http://www.bluevariant.com/2012/05/comprehensive-guide-git-gitolite-synology-diskstation/
我意识到我成功安装了 gitolite,但不知何故我无法使用用户“git”运行安装 - 但我可以以“root”身份运行
安装后,我退出了。但现在每次我再次尝试通过 ssh 登录时:$ ssh root@iptonas
我收到此错误:通道 0 上的 PTY 分配请求失败
我读到过 gitolite 现在禁用了 ssh 登录?我还能怎样重新进入 shell..?
答案1
error: PTY allocation request failed on channel 0
完全正常、符合预期且不阻塞(即 ssh 操作将会继续)
但是,您以 root 身份进行了安装,这很糟糕,尤其是当您考虑到ssh Gitolite 页面:
如果你正在安装 gitolite,那么无论你是否喜欢,你都是“系统管理员”。
如果您使用的是默认 ssh 模式(即非 http 模式),则 ssh 是必备技能。请花时间学习至少足够的知识,以便实现无密码访问。
理解 Gitolite 的关键是它的使用强制命令,以拒绝交互式 shell 并拦截任何命令(包括 git 命令),从而允许它强制对 Git 存储库进行访问控制。
这意味着您的~root/.ssh/authorized_keys
文件包含以下行:
command="/devit_home/users/vobadm/gitpoc/ce7/gitolite/bin/gitolite-shell gitoliteadm",no-port-forwarding,no-X11-for warding,no-agent-forwarding,no-pty ssh-rsa AAAAB3N
是no-port-forwarding
导致该警告消息“ PTY allocation request failed on channel 0
”的原因。但这并不妨碍 Gitolite 操作正常运行。
看 ”gitolite 如何使用所有这些 ssh 魔法?“。
对于 ssh 问题,请查看“SSH 故障排除“。
您需要通过其他方式访问您的服务器,然后删除以开头 ssh
的行。command
~root/.ssh/authorized_keys
您知道我如何使用 Telnet 重新执行 gitolite 安装过程吗?
以 root 身份登录后:
- 删除文件中以命令开头的行
~root/.ssh/authorized_keys
。 - 确保您的根公钥在同一个文件中注册(因此
command=
前面没有任何“ ”。
这将确保通过 ss 进行 root 访问。
然后重新安装,但首先sudo git
,
在进行安装时您必须是“git”。
您必须首先在客户端生成一个git
私钥和一个git.pub
公钥。
复制服务器上的公钥:您将把该公钥传递给命令gitolite install
。
DiskStation> /volume1/homes/git/gitolite/install -ln
(为了将安装链接到~git/bin
而不是“系统路径根保护”/bin
目录)。
答案2
我同意 Gitolite 可能不应该以 root 身份运行。我也犯了这个错误。只是添加一些额外的信息以防有帮助。
通过在 SSH 命令中添加以下标志,我仍然能够以 root 身份通过 SSH 连接到目标机器:
PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no
当然,这是假设您的 root 帐户有与之关联的密码。由于 Gitosis 编辑 SSH known_hosts 文件的方式,您将无法使用私钥进行身份验证,但是如果您使用上面列出的标志指定首选身份验证,则不会以任何方式查阅该文件。