Назад | Перейти на главную страницу

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.

что определенно могло сбивать с толку.

[только для записи - на момент написания, надеюсь, проблема давно решена]

С участием 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. Именно поэтому альтернативная оболочка невозможна.