Мне удалось испортить некоторые общие библиотеки в моей системе, и теперь моя оболочка не может быть запущена, что заблокировало меня из системы. Обе 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.
что определенно могло сбивать с толку.
[только для записи - на момент написания, надеюсь, проблема давно решена]
С участием 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
. Именно поэтому альтернативная оболочка невозможна.