ssh_config: укажите команду, которая будет выполняться на удаленной машине после входа в систему

sshd никогда не видит, какое ключевое имя файла используется клиентом, таким образом постобрабатывания нельзя избежать.

16
13.04.2017, 15:36
3 ответа

Этот вопрос задали прежде на SuperUser. Первый ответ использует удаленный файл, который не соответствует Вашим требованиям, но второй ответ, который предлагает использовать локальный псевдоним, мог быть решением Вашей проблемы.

Важно, чтобы command-to-be-executed был сохранен на локальной машине, поскольку это будет содержать пароль для открытия зашифрованного диска. Это - причина, почему я не могу поместить команду в .profile на удаленной машине.

Это, вероятно, не безопасно. Если я использую echo управляйте как команда ssh, она обнаруживается в ps на удаленном сервере:

martin@martin ~ % ssh dev2 "echo hello; ps aux|grep echo"

hello
root     25358  0.0  0.0   5848  1296 ?        Ss   11:27   0:00 bash -c echo hello; ps aux|grep echo
root     25362  0.0  0.0   5012   828 ?        S    11:27   0:00 grep echo
6
27.01.2020, 19:48
  • 1
    спасибо, но в решении на SuperUser ~/.ssh/rc хранится снова на удаленной машине. Относительно Вашего комментария о ps показ моих параметров командной строки (включая пароль), который не беспокоит меня. Это - удаленная машина, которой я не доверяю. Моя локальная машина только используется один, таким образом, ни у кого больше нет доступа к ps. –  Martin Vegter 21.09.2013, 21:23
  • 2
    Это ps вывод от удаленной машины. Точка: все Вы предоставляете к ssh поскольку удаленная команда обнаружится на удаленном сервере в ps. –  Martin von Wittich 21.09.2013, 21:37
  • 3
    Да, Вы правы. Спасибо за указание на это. –  Martin Vegter 21.09.2013, 22:04
  • 4
    @MartinvonWittich - Каждый сайт SE независим, таким образом, абсолютно приемлемо для каждого сайта иметь подобный Q и A, пока они находятся по теме для того конкретного сайта. Это поощряется скопировать содержание, если Q подходит, и A находится на другом сайте SE. Настройте его как соответствующий, таким образом, это находится по теме. –  slm♦ 22.09.2013, 01:54

Можно сделать это с сотрудничеством удаленной машины следующим образом.

На Вашей локальной машине наполните команду для выполнения в переменной среды LC_SSH_INITIAL_COMMAND. SSH обычно настраивается для передачи всех переменных среды формы LC_*, потому что это обычно - настройки локали.

На удаленной машине, выполненной eval "$LC_SSH_INITIAL_COMMAND" через настройки на ключ в ~/.ssh/authorized_keys или от ~/.ssh/rc (остерегайтесь этого, если у Вас есть a ~/.ssh/rc файл, необходимо заботиться о выполнении xauth вручную для передачи X11).

С authorized_keys метод, можно так же выполнить команду, когда сессия SSH выходит (если процесс оболочки не уничтожается резко; необходимо, по крайней мере, захватить Сигнал HUP так, чтобы команда была выполнена, даже если соединение умирает).

Однако это не хорошее расположение относительно того, чтобы сделать что-то глобальное как монтирование файловой системы. Необходимо будет заботиться для не монтирования снова, смонтирована ли файловая система уже (например, из-за одновременно рабочей команды SSH), а не размонтироваться на выходе из системы. Моя рекомендация для этого варианта использования состоит в том, чтобы все еще сделать монтирование явно, затем выполнить удаленные команды, не делая ничего специального, и размонтирования, когда Вы больше не хотите получить доступ к той файловой системе.

2
27.01.2020, 19:48

No lo he probado pero un enfoque podría ser

  • Declare un Subsystemen el control remoto sshd_configque ejecuta el comando que desea al leer algunos env vars
  • Use SendEnven el local .ssh/configpara pasar dichas claves al servidor remoto
0
27.01.2020, 19:48

Теги

Похожие вопросы