Вы продемонстрировали, что виновата не оболочка входа или ssh
, потому что если бы это был ssh (скрытый ) id
не удалось бы.
Следующее, что нужно попробовать, - это временно убрать с пути ваш .profile
. Не беспокойтесь об ошибках из-за mv
не удалось найти файл:
ssh pi@192.168.151 mv .bash_profile .bash_profile.SAVE
ssh pi@192.168.151 mv .profile .profile.SAVE
Теперь попробуйте войти в систему еще раз. Если это не удается, попробуйте это, чтобы определить точку, в которой установка оболочки не удалась:
ssh pi@192.168.151 /bin/bash -xi
Вы получите множество строк, начинающихся с +
, показывающих команды, которые выполняет bash
. во время его настройки. Несколько строк непосредственно перед точкой, в которой она неожиданно завершается, являются наиболее важными. Вы либо сможете диагностировать проблему по этим строкам, либо вам нужно будет добавить их в свой вопрос.
They both seem to me to create a login session for target-user.
На самом деле это не так. su
не создает сеанс входа в систему. Он «переключает пользователя» для запуска программы под эгидой другой учетной записи пользователя, добавляя привилегии (привилегии этой учетной записи )к совокупности привилегий, доступных пользователю существующего сеанса входа в систему, который она обкатана.
Фактически, программа login
также не создает сеанс входа в систему . Он ожидает, что сеанс входа в систему с запущенным процессом login
, помеченным как процесс лидера сеанса , и подключенным управляющим терминалом, уже настроен тем, кто его вызвал. login target-user
, предполагая, что встроенная -в login
команда оболочки C, которая фактически является exec
, co -выбирает существующий уже -установленный -сеанс входа в систему для другая учетная запись пользователя. Это, конечно, влечет за собой риски, которые к этому моменту хорошо известны.
Это, конечно, с учетом концепции ядра о сеансе входа в систему , который включает в себя лидера сеанса , управляющий терминал и группы процессов. . Люди из systemd изобрели свою собственную полностью прикладную -концепцию сеанса входа в систему, управляемую systemd-logind
в сочетании с подключаемыми модулями PAM -. Правила здесь немного отличаются, отчасти потому, что люди systemd испортили их, объединив остановку службы при завершении работы с зависанием сеанса (и все еще должны это исправить ). Но su
также не создает сеанс входа в систему такого типа.