Проблема: ssh
LocalCommand
выполняется на локальной (клиентской) стороне, а не на удаленной, как вы хотите. Там нет опции RemoteCommand
, но вы можете взломать функциональность в вашем конфигурационном файле. Обратите внимание, что все они предполагают, что ваш remotehost:.gnupg
существует.
Вариант 1. Используйте две отдельные спецификации хоста в ~/.ssh/config
:
Host remote
HostName remotehost
PermitLocalCommand yes
LocalCommand ssh -f %r@%n-mount -p %p sshfs -p 10000 %u@localhost:%d/.gnupg .gnupg
Host remote-mount
HostName remotehost
ForwardAgent yes
RemoteForward 10000 localhost:22
Недостатки: обе записи должны быть завершены для каждого хоста, для которого вы хотите эту точку монтирования.
Вариант 2. Объедините параметры ssh и переадресацию портов в LocalCommand:
Host remote
HostName remotehost
PermitLocalCommand yes
LocalCommand ssh -f %r@%h -o RemoteForward="10000 localhost:22" -o ForwardAgent=yes -p %p sshfs -p 10000 %u@localhost:%d/.gnupg .gnupg
Обратите внимание, что небольшая разница в двух строках LocalCommand
заключается в использовании% n в первом примере и% h во втором. Это будет работать, но имеет одно огромное ПОЛОЖЕНИЕ: вы НИКОГДА не будете использовать ssh для хоста по его истинному имени и только через "короткие имена", которые существуют в вашем файле .ssh/config
, в противном случае вы получите бесконечный цикл соединений ssh
пытаясь выполнить вашу LocalCommand
.
Вариант 3. Использование мультиплексирования SSH для настройки только одного подключения к удаленному:
Host remote
HostName remotehost
PermitLocalCommand yes
LocalCommand ssh -f %r@%h -o RemoteForward="10000 localhost:22" -o ForwardAgent=yes -p %p sshfs -p 10000 %u@localhost:%d/.gnupg .gnupg
ControlMaster auto
ControlPersist 30m
ControlPath ~/.ssh/controlmasters/%r@%h:%p
Я думаю, что это единственное выигрышное решение, и оно может работать даже по правилам Host *
, и не имеет никаких недостатков. Это даже решает проблему, заключающуюся в том, что вторые сеансы ssh на одном и том же хосте НЕ будут пытаться перемонтировать один и тот же каталог через sshfs.
Предостережение: еще одна проблема, которую я не удосужился решить: ваши удаленные sshfs
сохранятся еще долго после выхода из системы с удаленного хоста. Фактически, он никогда не будет unmount
, если ваш локальный хост не отключится или соединение не будет разорвано.
Вы можете посмотреть на какой - то другой вариант umount
, что sshfs
крепление , как вы выйдите из удаленного хоста, возможно , используя такие идеи, как это. Или вы можете играть в игры с LocalCommand
для выполнения чего-то, что наблюдает и самостоятельно монтируется после того, как происходит какое-то событие триггера, но в лучшем случае кажется хрупким.
Другой вариант - заключить команды ssh
в какую-либо оболочку или использовать ProxyCommand
чтобы сделать что-то хитрое, но я оставлю это в качестве упражнения для читателя.