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
, хоть.