saya ingin me-mount direktori lokal ke server ssh jarak jauh. khususnya direktori ~ / .gnupg saya sehingga saya dapat menggunakan keyring lokal saya di mana saja, tanpa menyimpannya dari jarak jauh.
jadi saya pikir solusi ini:
- biarkan server ssh lokal tetap dibuka (firewall sesuai keinginan Anda)
- ssh ke penerusan jarak jauh lokal: 22 ke jarak jauh: 10000
- luncurkan sshfs untuk me-mount localhost: 10000: .gnupg ke ~ / .gnupg
saya meletakkan ini di ssh / config saya:
Host remote
HostName remotehost
RemoteForward 10000 localhost:22
User user
PermitLocalCommand yes
LocalCommand sshfs -p 10000 [email protected]:/Users/remoteuser/.gnupg .gnupg
melakukan ssh, saya mendapatkan:
fuse: bad mount point `.gnupg': No such file or directory
jika saya menjalankan sshfs secara manual setelah ssh login semuanya berfungsi dengan baik. jadi saya kira direktif LocalCommand dijalankan sebelum RemoteForward.
bagaimana mengatasi ini?
Jawaban:
Soal:
ssh
'sLocalCommand
dijalankan pada lokal (klien) side, tidak jauh seperti yang Anda inginkan. Tidak adaRemoteCommand
pilihan, tetapi Anda dapat meretas fungsionalitas ke file konfigurasi Anda. Catatan, semua ini menganggap bahwaremotehost:.gnupg
direktori Anda ada sebelumnya.Opsi 1: Gunakan dua spesifikasi host terpisah di
~/.ssh/config
:Kelemahan: kedua entri harus keluar untuk setiap host yang Anda inginkan titik pemasangan ini.
Opsi 2: Gabungkan opsi ssh dan penerusan port ke LocalCommand:
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 terbatasssh
koneksi yang mencoba mengeksekusi AndaLocalCommand
.Opsi 3: Gunakan SSH Multiplexing untuk mengatur hanya satu koneksi ke remote:
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 terjadiunmount
, kecuali jika localhost Anda offline atau koneksi terputus.Anda bisa melihat beberapa pilihan lain untuk
umount
yangsshfs
me-mount saat Anda log out dari remote host, mungkin menggunakan ide-ide seperti ini . Atau Anda bisa bermain game denganLocalCommand
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 digunakanProxyCommand
untuk melakukan sesuatu yang rumit, tapi saya akan meninggalkan itu sebagai latihan untuk pembaca.sumber