SSH mit Authorized_keys zu einem Ubuntu-System mit verschlüsseltem Homedir?

13078
Josh

Ich habe vor kurzem einen neuen Server mit Ubuntu Karmic 9.10 eingerichtet, und als ich mein Home-Verzeichnis erstellt habe, habe ich mich für die Verschlüsselung entschieden. Nach dem Laden meiner Berechtigungsschlüssel-Datei in ~ / .ssh wird sie nicht erkannt, da mein Home-Verzeichnis erst nach meiner Anmeldung entschlüsselt wird. Gibt es eine Möglichkeit, SSH-Schlüssel mit verschlüsselten Home-Verzeichnissen unter Ubuntu zu arbeiten?

38
Bessere Tagvorschläge wurden begrüßt, es konnten keine wirklich guten Übereinstimmungen in den vorgeschlagenen Tags gefunden werden. Josh vor 14 Jahren 0
Ich denke, das ist genau richtig. Es gibt ein ubuntu-Tag, aber ich denke nicht, dass dieses Problem spezifisch für ein bestimmtes Betriebssystem ist. quack quixote vor 14 Jahren 1
Ein Symptom dieses Problems für mich in Ubuntu 11.10 ist, dass der erste Versuch, ssh in den Computer einzulegen, darin besteht, dass die Passwortauthentifizierung erforderlich ist (da `authorised_keys` noch nicht zugänglich ist). Wenn ich eine andere SSH-Verbindung starte, funktioniert die Schlüsselauthentifizierung. mindless.panda vor 12 Jahren 0

5 Antworten auf die Frage

39
djhowell

Ändern Sie diese Zeile in Ihrer Datei sshd_config:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys 

Verschieben Sie dann die Datei authorized_keys nach / etc / ssh / your-username / authorized_keys

Dieser Beitrag dokumentiert einen anderen Weg, um dieses Problem zu lösen.

Ich dachte, die erste Lösung klang perfekt, aber sie funktionierte nicht für mich. Nicht sicher warum. Aber der Beitrag, den Sie verlinkt haben, hat großartig funktioniert. Vielen Dank! Josh vor 14 Jahren 1
Josh - ist der Zielbenutzer der Besitzer dieser Dateien und die Berechtigungen 600 (700 für das Verzeichnis)? NVRAM vor 14 Jahren 3
Eine vollständige Anleitung finden Sie unter diesem Link: [SSH-Schlüssel auf Ubuntu] (https://help.ubuntu.com/community/SSH/OpenSSH/Keys). Blättern Sie nach unten zum Abschnitt zur Fehlerbehebung. jjeaton vor 12 Jahren 1
8
Marc-Antoine

Diese Lösung wurde von diesem Beitrag inspiriert . IMHO ist es viel besser als das Ändern von / etc / ssh / sshd_config, da kein Root-Zugriff erforderlich ist.

# Make your public key accessible mkdir -m 700 /home/.ecryptfs/$USER/.ssh echo $YOUR_PUBLIC_KEY > /home/.ecryptfs/$USER/.ssh/authorized_keys ln -s /home/.ecryptfs/$USER/.ssh/authorized_keys ~/.ssh/authorized_keys ecryptfs-umount-private chmod 700 $HOME mkdir -m 700 ~/.ssh ln -s /home/.ecryptfs/$USER/.ssh/authorized_keys ~/.ssh/authorized_keys  # Make it auto-mount with first login. # Note: it can cause problems with automated login. echo /usr/bin/ecryptfs-mount-private > ~/.profile echo cd >> ~/.profile echo source .profile >> ~/.profile ecryptfs-mount-private 
Können Sie eine zusammenfassende Aussage darüber machen, was dies tatsächlich tut? mindless.panda vor 12 Jahren 3
Ich habe eine Bearbeitung vorgenommen, um zu erklären, was passiert: Sie speichern Ihre öffentlichen Schlüssel, mit denen Sie auf den Computer zugreifen möchten, unter `authorized_keys 'in` / home / **. Ecryptfs ** / $ USER` ohne Verschlüsselung und mit dem Link von Ihnen verschlüsseltes Zuhause sowie Ihr unverschlüsseltes Zuhause. Das neue `.profile` in Ihrem unverschlüsselten Zuhause sollte Ihr verschlüsseltes Home-Verzeichnis," cd ", darin einhängen und Ihr echtes" .profile "als Quelle verwenden. LiveWireBT vor 7 Jahren 0
Funktioniert wie beabsichtigt bei einer Neuinstallation von 16.04. Einige Anmerkungen: Das unverschlüsselte Zuhause war nicht beschreibbar (was sinnvoll ist, Sie möchten nicht, dass Benutzer alles durch versehentliches Speichern von Daten unterlaufen). Ändern Sie die Berechtigungen daher vorübergehend. Außerdem muss man das alles vom Terminal aus erledigen, sich von der GUI abmelden und lightdm oder was auch immer man als DM verwendet, aufhören. 'ecryptfs-mount-private' fragt jedes Mal nach dem erfolgreichen Anmelden mit öffentlichen Schlüsseln nach dem Benutzerpasswort, sofern Sie nicht an der GUI angemeldet sind. In meiner Bearbeitung werden einige Echos durch ein Here-Dokument ersetzt. Es ist weniger wiederholend für die Eingabe. Lassen Sie sich davon nicht verwirren. LiveWireBT vor 7 Jahren 0
2
Ryan Thompson

Ich habe nur einige Zeit damit herumgespielt, und die Antwort ist, dass es praktisch unmöglich ist. Es ist möglich, kennwortlose, mit öffentlichen Schlüsseln authentifizierte Anmeldungen über ssh einzurichten. Sie müssen Ihr Kennwort nicht eingeben, um sich anzumelden. Dies bringt Sie jedoch nicht weiter, da Ihr Heimatverzeichnis immer noch verschlüsselt ist.

Die einfache Tatsache ist, dass Ihr verschlüsseltes Basisverzeichnis mit einem Kennwort * verschlüsselt ist. Die einzige Möglichkeit zum Entschlüsseln ist das Kennwort.

Wenn Sie der Meinung sind, dass es theoretisch möglich sein sollte, den ssh-Schlüssel zum Entschlüsseln der Mount-Passphrase beim Anmelden zu verwenden, funktioniert dies nicht, da Ihr privater Schlüssel niemals an den Server gesendet wird.

Wenn Sie also eine Verschlüsselung wünschen, müssen Sie Kennwörter verwenden. Verschlüsselte Basisverzeichnisse sind aus demselben Grund nicht mit Fingerabdruck-Anmeldungen kompatibel.


* Ich weiß, es ist komplizierter als ein einzelnes Passwort, aber machen wir es jetzt einfach.

Nun, die Antwort von djhowell hat perfekt funktioniert. Vermutlich ist mein Home-Verzeichnis mit einem Schlüssel verschlüsselt, den das Betriebssystem besitzt, und kann es entschlüsseln. Beim SSHing weiß sshd nicht, wie ich mein Heimatverzeichnis entschlüsseln soll. Das erklärt nicht, warum es mit der Passwortauthentifizierung funktioniert. Josh vor 14 Jahren 0
Warten Sie, wenn Sie sich also über ssh anmelden, ohne ein Kennwort einzugeben, wird Ihr verschlüsseltes Home-Verzeichnis tatsächlich eingehängt? Ryan Thompson vor 14 Jahren 0
Ja tut es. Und beim Abmelden umgesehen. Josh vor 14 Jahren 0
Nun, das ist seltsam. Ich bekomme das Verhalten, das ich in meiner Antwort beschreibe. Mein privates Verzeichnis wird nur gemountet, wenn mein Login ein Passwort enthält (insbesondere mein Login-Passwort). Ich frage mich, was Sie anders gemacht haben, damit es mit öffentlichen Schlüsseln funktioniert. Ryan Thompson vor 14 Jahren 0
@ Ryan Thompson Verwenden Sie Ubuntu 9.10? Josh vor 14 Jahren 0
Ja bin ich. Ubuntu Jaunty. Ist es in Jaunty kaputt oder so? Verknüpfung? Ryan Thompson vor 14 Jahren 0
@Josh Ich weiß, das ist ein alter Kommentar, aber neugierig, ob du das immer noch findest? Ubuntu beendete einen "Won't Fix" Bug für das Problem, so wie Ryan es beschrieben hatte. Eine anständige Problemumgehung (abhängig von der Sicherheitsempfindlichkeit) besteht darin, .ecryptfs / auto-umount zu entfernen, sodass Sie Ihr Verzeichnis nur einmal manuell einhängen müssen. https://bugs.launchpad.net/ecryptfs/+bug/367804 Jeremy vor 12 Jahren 0
Ich bin mir nicht sicher, @Jeremy ... Ich habe meine Ubuntu-Server aktualisiert und habe diese Frage seit einiger Zeit nicht erneut geprüft. Ich müsste ein paar Tests machen ... Josh vor 12 Jahren 0
Auf Ubuntu 14.04 kann ich nun öffentliche / private Schlüssel verwenden, um die Authentifizierung mittels SSH zu erhalten, wobei mein Heimatverzeichnis verschlüsselt wird. Nach der erfolgreichen Authentifizierung wird immer noch das Anmeldekennwort für den Benutzer angezeigt, oder mein verschlüsseltes Heim wird nicht bereitgestellt. Also, was du gesagt hast, sieht für mich richtig aus, Ryan! Es ist ein Verhalten, das ich für meinen Standardbenutzer mag, aber ich kann keinen verschlüsselten Home-Ordner für Ansible verwenden (scheint immer noch nach einer Lösung zu suchen). Huygens vor 8 Jahren 0
1
B. Davis

Wenn Sie das Standard-Setup nicht ändern möchten (ich mag es nicht, dass meine Dateien dort sind, wo ich davon ausgehe, dass sie sich befinden), möchten Sie vielleicht in meinem Beitrag nachsehen, wie das geht:

http://www.enetworkservices.net/wordpress/ssh-public-keys-with-encrypted-home-directory.html

Zusamenfassend. Sie geben Ihre Schlüssel in die verschlüsselte Version Ihres Benutzers ein ~/.sshund verknüpfen die verschlüsselte Version von ~/.sshmit der anderen. So ist es immer da.

Für die faulen Leute wie ich, hier ist ein Skript, um es für Sie zu tun. Führen Sie es einfach als normaler Benutzer aus. Kein Root-Zugriff oder keine Berechtigungen erforderlich und keine Serverkonfigurationsänderungen erforderlich. Reine normale Benutzereinstellungen.

#!/bin/bash # # Encrypted Home DIR SSH Key fix. # Requires modification to sshd_config # AuthorizedKeys /etc/ssh/authorized_keys/%u/authorized_keys # sudo mkdir /etc/ssh/authorized_keys -m 777 # for existing users run from home directory when login. # for new users modify /etc/skel to include .bashrc to call script. # # Author: Benjamin Davis <bdavis@enetworkservices.net>  # Check if directory exists. if [ ! -d "/etc/ssh/authorized_keys/$LOGNAME" ] then # Make directory with restricted permissions. echo "Creating user ssh directory." mkdir /etc/ssh/authorized_keys/$LOGNAME -m 700 fi  # Check real users home .ssh folder if [ -d "/home/$LOGNAME/.ssh" ] then # Check if dir is symlink if [ ! -h /home/$LOGNAME/.ssh ] then echo "Moving configs." mv /home/$LOGNAME/.ssh/. /etc/ssh/authorized_keys/$LOGNAME/. rm -rf /home/$LOGNAME/.ssh/ ln -s -T /etc/ssh/authorized_keys/$LOGNAME /home/$LOGNAME/.ssh clear fi else # Does not exist so link it. if [[ $EUID -ne 0 ]] then echo "User ssh config folder does not exist. Creating." mkdir /home/$LOGNAME/.ssh -m 700 ln -s -T /etc/ssh/authorized_keys/$LOGNAME /home/$LOGNAME/.ssh fi fi 
0
3498DB

Sie können den sichereren öffentlichen Schlüssel zum Anmelden verwenden und anschließend Folgendes ausführen, um Ihr Verzeichnis bereitzustellen, nachdem Sie Ihr Kennwort eingegeben haben:

ecryptfs-mount-private 

Lesen Sie die ~/README.txtDatei nach der Anmeldung über SSH. Sie haben festgestellt, dass Ihre Dateien nicht vorhanden sind, da das verschlüsselte Verzeichnis nicht angehängt ist.

Sie sollten ohnehin keine passwortlosen öffentlichen Schlüssel für die Anmeldung verwenden. Schauen Sie sich ssh-agent für einen besseren Weg an.