Beachten Sie diese Option:
-o SSHOPT=VAL ssh-Optionen (siehe man ssh_config)
Und wenn Sie sich man ssh_config
ansehen , gibt es eine Option zum Festlegen des Pfads zu Ihrer privaten Schlüsseldatei mit dem Namen IdentityFile
, damit Sie Folgendes tun können:
sshfs -oIdentityFile=/abs/path/to/id_rsa server: path/to/mnt/point
Der Pfad zur Identitätsdatei muss ein absoluter Pfad sein.
Im Prinzip funktioniert es so (als root, oder benutze sudo
):sshfs -o default_permissions,nonempty,IdentityFile=/home/USER/.ssh/id_rsa [email protected]:PATH /mnt/mountpoint
Ersetzen Sie USER
mit dem Benutzer, der sich im authorized_keys
befindet Datei des Servers, SERVER
mit dem Servernamen (oder IP, wie 192.168.0.11), SRVUSER
mit dem Benutzer auf dem Server (z. B. root, was nicht empfohlen, aber möglich und manchmal notwendig ist; richten Sie Ihre /etc/ssh/sshd_config
auf dem Server dafür richtig, d.h. Direktiven PermitRootLogin
und PasswordAuthentication
). Ersetzen Sie auch /mnt/mountpoint
entsprechend.
Die Option -o nonempty
ermöglicht das Mounten von /mnt/mountpoint, wenn dieses Verzeichnis nicht leer ist. Ich muss dies verwenden, da ich die Datei .unmounted
behalte in diesem Verzeichnis, um zu sehen, ob es gemountet ist oder nicht, also wenn test -e /mnt/mountpoint/.unmounted
erfolgreich zurückgibt (d.h. Datei .unmount existiert in /mnt/mountpoint), sie ist nicht gemountet.
Ein reales Beispiel:
- Servername "homeserver"
- Mount /home-Verzeichnis auf dem Server
- Mein Mountpoint auf dem lokalen System ist /mnt/homeserver
- Benutzer "steve" hat den privaten Schlüssel
ssh [email protected]
als Benutzer steve arbeitete.
sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa [email protected]:/home /mnt/homeserver
(als root)
Das hat nicht funktioniert , bekam ich die Fehlermeldung:read: Connection reset by peer
Lösung: Erhalten Sie eine ausführlichere Ausgabe, indem Sie -o debug
hinzufügen .
# 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
Und plötzlich ist es viel einfacher zu beheben. Weil die sshd-Schlüssel seit der letzten Sitzung neu erstellt wurden, aber /root/.ssh/known_hosts
auf dem lokalen System hat noch die alten Schlüssel – es funktioniert nicht. Die Lösung bestand in meinem Fall einfach darin, die mit homeserver
beginnende Zeile zu entfernen ab /root/.ssh/known_hosts
mit einem Editor (wie nano
). Jetzt funktioniert das Mounten mit sshfs. Beim ersten Mounten muss der neue Schlüssel bestätigt werden:
# 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
Übrigens, das ist die Zeile in /etc/fstab
:
[email protected]:/home /mnt/homeserver fuse.sshfs noauto,nonempty,default_permissions,IdentityFile=/home/steve/.ssh/id_rsa 0 0
Also, selbst wenn es etwas anderes ist, versuchen Sie es mit -o debug
Erste. Es wird enorm helfen, den Fehler zu finden.