尽管用户“git”的登录shell是/bin/bash,当我尝试ssh到机器时还是出现以下错误:
PTY allocation request failed on channel 0
bash: /home/git/bin/gitolite-shell: No such file or directory
Connection to 192.168.20.151 closed.
我先执行“deluser git”,然后执行“adduser git --shell=/bin/bash”,但不起作用。我再次使用“chsh”进行更改,仍然不起作用。这个“/home/git/bin/gitolite-shell”存储在哪里?
答案1
我刚刚发现,当我完全重置用户的整个主目录时git
:
deluser git --remove-home --backup # creates backup of home dir of git. see deluser(8)
adduser git
我摆脱了gitolite-shell
。
但是我仍然不知道字符串/home/git/bin/gitolite-shell
存储在哪里。
答案2
除非您安装了它,否则它不会出现在您的系统中。我认为您收到错误的原因如下:
您正在连接文件中可识别的特定密钥~git/.ssh/authorized_keys
。您可能在其中找到如下条目:
# gitolite start
command="/home/git/bin/gitolite-shell YOURNAME",no-port-forwarding,
no-X11-forwarding,no-agent-forwarding,no-pty
ssh-rsa AAAAB3N.....<snip>... [email protected]
# gitolite end
因此,sshd 不会遵守您使用 设置的默认 shell 的设置chsh
,而是会干扰并启动特定程序(在本例中为 gitolite-shell)。这是狡猾的 gitolite 设置和所需行为的一部分。在您的设置中,您缺少 gitolite,或者可能只是 ~git/bin 中缺少相应的链接。不幸的是,您现在无法验证这一点。
如果你确实想尝试,你可以选择从最新的存储库安装(此处的说明) 因为 ubuntu 版本 2.2 落后于官方版本 v.3.4。