Проблема, действительно, заключалась в моем сценарии входа в систему, хотя он не был связан с требованием терминала (я подозревал это и проверял параметры -t
и -T
). Проблема заключалась в том, что мой .bashrc
работал exec
(в данном случае zsh
- потому что наша система не позволяет chsh
до zsh
).
Оскорбительная строка:
test -f /usr/bin/zsh && exec /usr/bin/zsh
Решается, сначала проверив наличие интерактивной оболочки и выйдя, если так:
[ -z "$PS1" ] && return
test -f /usr/bin/zsh && exec /usr/bin/zsh
Итак, по сути, поскольку оболочка в zsh
, ssh
ждала, пока это закончится - чего не произошло.
Я немного запутался, почему мой .bashrc
вообще вызывался - я думал, что это только для интерактивных оболочек, но точное назначение и порядок различных сценариев инициализации - это то, что я не думаю, что когда-либо узнать.
Я надеюсь, что это может быть полезно для других, у кого есть какие-то exec
в их сценариях запуска.
Кстати, два других ответа были на правильном пути, поэтому я был совершенно не уверен, должен ли я «отвечать» или просто комментировать их ответы. Если ответ на мой собственный вопрос является некорректным с помощью stackoverflow, дайте мне знать, и я буду раскаиваться. Спасибо другим ответчикам.