Frage Umgehen Sie die Überprüfung der ssh-Schlüsseldateiberechtigung


Ich habe ein verschlüsseltes FAT-Volume (aus Kompatibilitätsgründen), das eine private Schlüsseldatei und andere vertrauliche Daten enthält.

Ich möchte mit meinem privaten Schlüssel eine Verbindung zu meinem Server über SSH herstellen, aber da FAT keine Dateiberechtigung unterstützt, ignoriert es meinen Schlüssel und sagt, dass seine Berechtigungen zu offen sind.

Momentan kopiere ich es irgendwo anders auf meiner Festplatte mit 0600 Berechtigungen, verwende es und lösche es dann sicher, aber es ist ein Schmerz.

Gibt es eine Möglichkeit, die Berechtigungsprüfung in dieser ssh / scp-Befehlszeile zu umgehen?

Bearbeiten: Präzision: Es war ein TrueCrypt-Volume unter OS X.

Auf die Lösung: Die untenstehende Antwort hat mein Problem gelöst (mithilfe einer SSH-Schlüsseldatei, die sich auf einem TrueCrypt-Volume mit Mac OS X befindet), aber es ist eine Umgehungslösung. Sieht so aus, als gäbe es keine Möglichkeit, die Erlaubnis zur Überprüfung von Schlüsseldateien zu umgehen.


20
2017-11-05 14:47


Ursprung




Antworten:


AFAIK, gibt es keine Möglichkeit, die Schlüsseldatei-Berechtigungsprüfung mit ssh oder ssh-add zu umgehen (und Sie können es nicht mit Named Pipe oder dergleichen austricksen). Außerdem möchten Sie ssh nicht wirklich austricksen, sondern nur Ihre Schlüsseldateien verwenden können.

In der Tat, TrueCrypt-Volume soll Ihre Daten privat halten, so dass die Volumes als Welt lesbar (Standard-Verhalten von TrueCrypt) ist nicht wirklich optimal. Wenn Sie ein FAT-formatiertes Volume verwenden, sollten Sie die Mount-Optionen wirklich anpassen, wie Dan Carley vorgeschlagen hat.

Obwohl Mount-Optionen von TrueCrypt für OS X noch nicht korrekt unterstützt werden (selbst wenn Sie TC über die Befehlszeilenschnittstelle und die Mount-Optionen von der Man-Page starten), unterstützt OS X die Standardwerte für Mount-Optionen basierend auf dem Volume-Namen .

Sie müssen Ihre Benutzer-ID kennen (normalerweise 501, wenn Sie der erste / einzige Benutzer des Computers sind). Du kannst es mit "id -u" bekommen.

Lassen Sie uns sagen, dass der Volume-Name "PRIVATE" ist (Volume-Namen sind in Großbuchstaben), und Ihre UID ist 501, Sie müssen nur diese Zeile zu / etc / fstab hinzufügen:

LABEL=PRIVATE none msdos -u=501,-m=700

Sie müssen root sein, um diese Datei zu erstellen / bearbeiten (sie ist nicht in der standardmäßigen OSX-Installation enthalten):

sudo vim /etc/fstab

Wenn Sie das nächste Mal das Volume mounten, besitzt es die Berechtigung 700 und die Besitzer-ID 501.

Dies funktioniert auch mit USB-Laufwerken (die normalerweise auch in FAT formatiert sind).


14
2017-11-06 17:40



funktioniert perfekt - instanceof me
Ich konnte kein FAT-formatiertes Volume abrufen, um mit dieser Methode die richtigen Berechtigungen zu erhalten. Wenn Sie jedoch "Mac OS Extended" auswählen und die Option zum Mounten auf anderen Betriebssystemen auswählen, können Sie die Berechtigungen mit chmod festlegen. - emptyset
Das hat wunderbar funktioniert. Wenn ich das sichere Volume mounte, mounte ich es an einen bestimmten Punkt in meinem Home-Verzeichnis. Ich fand, dass ich den Wert von "none" durch den expliziten Namen des Mount-Punktes ersetzen musste. - Alec the Geek


Das Hinzufügen des Schlüssels von stdin hat für mich funktioniert:

cat /path/to/id_rsa | ssh-add -k -

14
2017-11-14 10:25



warum hat das nicht eine upvote? es funktioniert ohne montage aus der box und du verwendest trotzdem einen ssh-agent, oder? - P.Scheit
wirkt wie ein Zauber - sollte die akzeptierte Antwort sein - hdave


Als verrückte Lösung können Sie ein Disk-Image eines ext2-Volumes erstellen, das Ihren privaten Schlüssel enthält, und es als Loop-Gerät mounten und dann Ihren ssh-Schlüssel von dort verwenden.

Erstellen Sie eine 1 MB leere Datei:

dd if=/dev/zero of=diskimg bs=1024 count=1024

Formatiere es ext2 (Drücke Y, wenn es heißt, dass es kein Gerät ist):

mke2fs diskimg

Stellen Sie es irgendwo (als root):

mount -t ext2 -o loop diskimg /my/path/to/diskimg

Jetzt haben Sie ein kleines ext2-Dateisystem, für das Sie Berechtigungen festlegen können. Sie könnten ein Skript schreiben, um es einzuhängen, und sicherstellen, dass diese Berechtigungen die richtige UID / GID haben, basierend auf dem System, auf dem Sie sich befinden (da die UIDs nicht übereinstimmen). Es erfordert auch, dass sudo / root-Zugriff funktioniert.


7
2017-11-05 15:14



scheint, als gäbe es keine einfachere Option - instanceof me
das ist so falsch - aber sehr cool :) - warren
@warren: Ich habe es mit "verrückt" vorgesprochen. :-D - Kyle Smith


Was ist mit dem Hinzufügen? StrictModes no zu deinem /etc/ssh/sshd_config (und das Neuladen / Neustart sshd)?

edit: oops, diese Option ist nur serverseitig: /


2
2017-11-10 12:21





Wenn ich mich richtig erinnere, ssh-agentüberprüft nicht auf Schlüsselberechtigungen. Also könnte das funktionieren:

[-S "$ SSH_AUTH_SOCK"] || eval $ (ssh-agent)
ssh-add Pfad / zu / ID_rsa

1
2017-11-05 15:32



FYI, das funktioniert nicht. ssh-add überprüft Dateiberechtigungen. - Kyle Smith


Können Sie Ihre Mount-Optionen ändern (umask, uid und gid) passen?


0
2017-11-05 14:52



AFAIK Nein, es ist ein TrueCrypt-Volume, meine einzige Option ist, es als schreibgeschützt zu mounten und ssh beklagt sich immer noch, dass es 0777 ist - instanceof me