GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie gebe ich die Schlüsseldatei für sshfs an?

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.


Linux
  1. So verbinden Sie sich mit SFTP mit FileZilla für eine sichere Dateiübertragung

  2. Wie füge ich am Ende einer Datei einen Zeilenumbruch hinzu?

  3. Linux – Wie bekomme ich Sar für den Vortag angezeigt?

  4. Wie starte ich den Tomcat-Server unter Linux?

  5. Wie funktionieren Dateiberechtigungen für den Root-Benutzer?

So laden Sie eine Datei auf den Server hoch

So fügen Sie dem Server einen öffentlichen SSH-Schlüssel hinzu

So ändern Sie den Server-Hostnamen in Ubuntu

Wie ändere ich die Zeitzone auf Ubuntu 18.04 Server?

So installieren und konfigurieren Sie die CSF-Firewall für Linux

Was ist der Unterschied zwischen der Datei „authorized_keys“ und „known_hosts“ für SSH?