Všimněte si této možnosti:
-o SSHOPT=VAL možnosti ssh (viz man ssh_config)
A když se podíváte na man ssh_config
, existuje možnost nastavit cestu k souboru vašeho soukromého klíče s názvem IdentityFile
, takže můžete udělat toto:
sshfs -oIdentityFile=/abs/path/to/id_rsa server: path/to/mnt/point
Cesta k souboru identity musí být absolutní cesta.
V principu to funguje takto (jako root nebo použijte sudo
):sshfs -o default_permissions,nonempty,IdentityFile=/home/USER/.ssh/id_rsa [email protected]:PATH /mnt/mountpoint
Nahraďte USER
s uživatelem, který je v authorized_keys
soubor serveru, SERVER
s názvem serveru (nebo IP, např. 192.168.0.11), SRVUSER
s uživatelem na serveru (např. root, což se nedoporučuje, ale je to možné a někdy nutné; nastavte si /etc/ssh/sshd_config
na serveru správně, tj. direktivy PermitRootLogin
a PasswordAuthentication
). Nahraďte také /mnt/mountpoint
podle toho.
Možnost -o nonempty
umožňuje připojení /mnt/mountpoint, když tento adresář není prázdný. Musím to použít, protože mám soubor .unmounted
v tomto adresáři, abyste viděli, zda je připojen nebo ne, takže pokud test -e /mnt/mountpoint/.unmounted
vrátí úspěšně (tj. soubor .unmounted existuje v /mnt/mountpoint), není připojen.
Skutečný příklad:
- název serveru "homeserver"
- připojit /home adresář na server
- můj přípojný bod v místním systému je /mnt/homeserver
- uživatel „steve“ má soukromý klíč
ssh [email protected]
jak uživatel Steve pracoval.
sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa [email protected]:/home /mnt/homeserver
(jako root)
Toto nefungovalo , zobrazila se mi chybová zpráva:read: Connection reset by peer
Řešení: Získejte podrobnější výstup přidáním -o debug
.
# sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa,debug
[email protected]:/home /mnt/homeserver
FUSE library version: 2.9.8
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT0123
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:2
ECDSA host key for homeserver has changed and you have requested strict checking.
Host key verification failed.
read: Connection reset by peer
A najednou je to mnohem jednodušší opravit. Protože klíče sshd byly znovu vytvořeny od poslední relace, ale /root/.ssh/known_hosts
na místním systému má stále staré klíče – nefunguje. Řešením v mém případě bylo jednoduše odstranit řádek začínající homeserver
z /root/.ssh/known_hosts
pomocí editoru (například nano
). Nyní funguje montáž pomocí sshfs. Při prvním připojení musí být nový klíč potvrzen:
# mount /mnt/homeserver
The authenticity of host 'homeserver (192.168.0.11)' can't be established.
ECDSA key fingerprint is SHA256:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsS/1234.
Are you sure you want to continue connecting (yes/no)? yes
BTW, toto je řádek v /etc/fstab
:
[email protected]:/home /mnt/homeserver fuse.sshfs noauto,nonempty,default_permissions,IdentityFile=/home/steve/.ssh/id_rsa 0 0
Takže i když je to něco jiného, zkuste -o debug
První. Ohromně to pomůže najít chybu.