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

Другие вопросы по тегам