Soal: ssh
's LocalCommand
dijalankan pada lokal (klien) side, tidak jauh seperti yang Anda inginkan. Tidak ada RemoteCommand
pilihan, tetapi Anda dapat meretas fungsionalitas ke file konfigurasi Anda. Catatan, semua ini menganggap bahwa remotehost:.gnupg
direktori Anda ada sebelumnya.
Opsi 1: Gunakan dua spesifikasi host terpisah di ~/.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
Kelemahan: kedua entri harus keluar untuk setiap host yang Anda inginkan titik pemasangan ini.
Opsi 2: Gabungkan opsi ssh dan penerusan port ke 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
Perhatikan perbedaan halus dalam dua LocalCommand
baris adalah penggunaan% n pada contoh pertama dan% h pada baris kedua. Ini akan berhasil, tetapi memiliki satu ASUMSI besar : Anda TIDAK PERNAH ssh ke host dengan nama sebenarnya dan hanya melalui "nama pendek" yang ada di .ssh/config
file Anda , jika tidak, Anda akan berakhir dengan loop tak terbatas ssh
koneksi yang mencoba mengeksekusi Anda LocalCommand
.
Opsi 3: Gunakan SSH Multiplexing untuk mengatur hanya satu koneksi ke remote:
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
Saya pikir itu satu-satunya solusi yang menang, dan bahkan dapat bekerja dalam Host *
aturan, DAN tidak menderita kerugian. Bahkan memecahkan masalah bahwa sesi ssh kedua ke host yang sama TIDAK akan mencoba untuk me-remount direktori yang sama melalui sshfs.
Peringatan: Satu masalah terakhir yang tidak ingin saya atasi: remote Anda sshfs
akan bertahan lama setelah Anda keluar dari host remote. Bahkan, itu tidak akan pernah terjadi unmount
, kecuali jika localhost Anda offline atau koneksi terputus.
Anda bisa melihat beberapa pilihan lain untuk umount
yang sshfs
me-mount saat Anda log out dari remote host, mungkin menggunakan ide-ide seperti ini . Atau Anda bisa bermain game dengan LocalCommand
untuk mengeksekusi sesuatu yang menonton dan self-umount setelah melihat beberapa peristiwa pemicu terjadi, tetapi tampaknya rapuh.
Pilihan lain adalah membungkus ssh
perintah dalam beberapa shell atau mungkin digunakan ProxyCommand
untuk melakukan sesuatu yang rumit, tapi saya akan meninggalkan itu sebagai latihan untuk pembaca.