sshd никогда не видит, какое ключевое имя файла используется клиентом, таким образом постобрабатывания нельзя избежать.
Этот вопрос задали прежде на 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
Можно сделать это с сотрудничеством удаленной машины следующим образом.
На Вашей локальной машине наполните команду для выполнения в переменной среды 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), а не размонтироваться на выходе из системы. Моя рекомендация для этого варианта использования состоит в том, чтобы все еще сделать монтирование явно, затем выполнить удаленные команды, не делая ничего специального, и размонтирования, когда Вы больше не хотите получить доступ к той файловой системе.
No lo he probado pero un enfoque podría ser
Subsystem
en el control remoto sshd_config
que ejecuta el comando que desea al leer algunos env vars SendEnv
en el local .ssh/config
para pasar dichas claves al servidor remoto
~/.ssh/rc
хранится снова на удаленной машине. Относительно Вашего комментария оps
показ моих параметров командной строки (включая пароль), который не беспокоит меня. Это - удаленная машина, которой я не доверяю. Моя локальная машина только используется один, таким образом, ни у кого больше нет доступа кps
. – Martin Vegter 21.09.2013, 21:23ps
вывод от удаленной машины. Точка: все Вы предоставляете кssh
поскольку удаленная команда обнаружится на удаленном сервере вps
. – Martin von Wittich 21.09.2013, 21:37