Nota questa opzione:
-o SSHOPT=VAL opzioni ssh (vedi man ssh_config)
E se guardi man ssh_config
, c'è un'opzione per impostare il percorso del tuo file di chiave privata, chiamato IdentityFile
, quindi puoi farlo:
sshfs -oIdentityFile=/abs/path/to/id_rsa server: path/to/mnt/point
Il percorso del file di identità deve essere un percorso assoluto.
In linea di principio funziona così (come root, o usa sudo
):sshfs -o default_permissions,nonempty,IdentityFile=/home/USER/.ssh/id_rsa [email protected]:PATH /mnt/mountpoint
Sostituisci USER
con l'utente che si trova nel authorized_keys
file del server, SERVER
con il nome del server (o IP, come 192.168.0.11), SRVUSER
con l'utente sul server (ad es. root, che non è raccomandato ma possibile e talvolta necessario; imposta il tuo /etc/ssh/sshd_config
sul server correttamente per questo, cioè direttive PermitRootLogin
e PasswordAuthentication
). Sostituisci anche /mnt/mountpoint
di conseguenza.
L'opzione -o nonempty
consente il montaggio di /mnt/mountpoint quando questa directory non è vuota. Devo usarlo poiché conservo il file .unmounted
in questa directory per vedere se è montato o meno, quindi if test -e /mnt/mountpoint/.unmounted
restituisce successo (cioè il file .unmount esiste in /mnt/mountpoint), non è montato.
Un esempio reale:
- nome del server "homeserver"
- monta la directory /home sul server
- il mio punto di montaggio sul sistema locale è /mnt/homeserver
- l'utente "steve" ha la chiave privata
ssh [email protected]
come utente steve ha lavorato.
sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa [email protected]:/home /mnt/homeserver
(come root)
Non ha funzionato , ho ricevuto il messaggio di errore:read: Connection reset by peer
Soluzione: Ottieni un output più dettagliato aggiungendo -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
E all'improvviso è molto più facile da risolvere. Perché le chiavi sshd sono state ricreate dall'ultima sessione tranne /root/.ssh/known_hosts
sul sistema locale ha ancora le vecchie chiavi – non funziona. La soluzione, nel mio caso, era semplicemente rimuovere la riga che iniziava con homeserver
da /root/.ssh/known_hosts
utilizzando un editor (come nano
). Ora il montaggio con sshfs funziona. Al primo montaggio la nuova chiave deve essere riconosciuta:
# 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
A proposito, questa è la riga in /etc/fstab
:
[email protected]:/home /mnt/homeserver fuse.sshfs noauto,nonempty,default_permissions,IdentityFile=/home/steve/.ssh/id_rsa 0 0
Quindi, anche se è qualcos'altro, prova -o debug
primo. Aiuterà enormemente a trovare il difetto.