SSH без вызова оболочки
Мне удалось испортить некоторые разделяемые библиотеки в моей системе, и теперь моя оболочка не может быть запущена, что блокирует меня из системы. И то и другое ssh, sftp, а также scp, как настроено в удаленной системе, похоже, полагается на оболочку, поэтому эти альтернативы отсутствуют. На самом деле, это не большая проблема, потому что у меня есть несколько удаленных рук, которые могут изменить мою оболочку на sh через консоль.
Тем не менее, мне любопытно перейти к механике протокола SSH, можно ли проверить подлинность и выполнить некоторые манипуляции на удаленной системе (например, изменить /etc/passwd), даже не вызывая оболочку?
РЕДАКТИРОВАТЬ
Справедливости ради, к парню, который предложил указать альтернативную команду / оболочку после строки команды ssh (например, ssh myhost /bin/sh): на странице руководства указано:
If command is specified, it is executed on the remote host instead of a login shell.
что определенно может сбить с толку.
1 ответ
[только для справки - на момент написания, проблема уже давно решена, мы надеемся]
С opensshЛЮБАЯ команда выполнена sshd выполняется через вашу оболочку входа в систему с -c опция:
- Команда прошла в
sshкомандная строка (т.е.ssh user@host command) - Команда, установленная в
.authorized_keysфайл (то естьcommand="..." ssh-rsa AAAA...) - команда, указанная
ForceCommandвариант вsshd_config - исполнение
~/.ssh/rcсценарий (через/bin/sh ~/.ssh/rc) - даже
scpлокальные для сервера команды, выполняемые в ответ на удаленныйscp
Итак, если ваш логин шелл (/bin/false или же nologin) или нет, вы не можете выполнить что-либо удаленно с ssh, Вот почему альтернативная оболочка невозможна.
Это все еще возможно исправить вещи с sftp, хоть.