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

38

Ich habe kürzlich einen neuen Server mit Ubuntu karmic 9.10 eingerichtet und als ich mein Home-Verzeichnis erstellt habe, habe ich mich dafür entschieden, es zu verschlüsseln. Nachdem ich meine authorized_keys-Datei in ~ / .ssh geladen habe, wird sie nicht erkannt, da mein Home-Verzeichnis erst nach der Anmeldung entschlüsselt wird. Gibt es eine Möglichkeit, SSH-Schlüssel unter Ubuntu für verschlüsselte Home-Verzeichnisse zu verwenden?

Josh
quelle
Bessere Tag-Vorschläge erwünscht. In den vorgeschlagenen Tags wurden keine wirklich guten Übereinstimmungen gefunden.
Josh
1
Ich denke, die sind genau richtig. Es gibt ein ubuntuTag, aber ich glaube nicht, dass dieses Problem für ein bestimmtes Betriebssystem spezifisch ist.
Quack Quijote
Ein Symptom für dieses Problem in Ubuntu 11.10 ist, dass der erste Versuch, in den Computer zu sshen, darin besteht, dass eine Kennwortauthentifizierung erforderlich ist (da authorized_keysnoch nicht zugegriffen werden kann). Wenn ich eine andere SSH-Verbindung starte, funktioniert die Schlüsselauthentifizierung.
mindless.panda

Antworten:

39

Ändern Sie diese Zeile in Ihrer sshd_config-Datei:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

Verschieben Sie anschließend die Datei "authorized_keys" nach / etc / ssh / your-username / authorized_keys

Dieser Beitrag dokumentiert einen anderen Lösungsweg.

djhowell
quelle
1
Ich fand die erste Lösung perfekt, aber sie hat bei mir nicht funktioniert. Nicht sicher warum. Aber der Beitrag, den Sie verlinkt haben, hat super funktioniert. Vielen Dank!
Josh
3
Josh - ist der Zielbenutzer der Eigentümer dieser Dateien und der Berechtigungen 600 (700 für das Verzeichnis)?
NVRAM
1
Eine vollständige Anleitung finden Sie unter diesem Link: SSH-Schlüssel unter Ubuntu . Scrollen Sie zum Abschnitt zur Fehlerbehebung.
JJeaton
8

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

# 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
Marc-Antoine
quelle
3
Können Sie eine zusammenfassende Aussage darüber machen, was dies tatsächlich bewirkt?
mindless.panda
Ich habe bearbeitet zu erklären , was passiert: Sie speichern Ihre öffentlichen Schlüssel (n) , mit dem Sie die Maschine zugreifen möchten authorized_keysin /home/**.ecryptfs**/$USERohne Verschlüsselung und Link , um es von Ihnen zu Hause als auch Ihre unverschlüsselt zu Hause verschlüsselt. Die neue .profilein Ihrem unverschlüsselten Zuhause sollte Ihr verschlüsseltes Zuhause-Verzeichnis "cd" einhängen und Ihre echte Quelle .profile.
LiveWireBT
Funktioniert bei einer neuen 16.04-Installation wie vorgesehen. Einige Anmerkungen: Das unverschlüsselte Haus war nicht beschreibbar (was Sinn macht, Sie möchten nicht, dass Benutzer alles untergraben, indem sie versehentlich Daten dort speichern), also ändern Sie die Berechtigungen vorübergehend. Außerdem muss man all dies vom Terminal aus erledigen, sich von der GUI und LightDM abmelden oder das DM, das Sie verwenden, stoppen. ecryptfs-mount-privatefragt nach jeder erfolgreichen Anmeldung über öffentliche Schlüssel nach dem Benutzerkennwort, es sei denn, Sie sind an der GUI angemeldet. Meine Bearbeitung ersetzt ein paar Echos durch ein Here-Dokument. Es ist weniger repetitiv zu tippen. Lassen Sie sich davon nicht verwirren.
LiveWireBT
2

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

Die einfache Tatsache ist, dass Ihr verschlüsseltes Home-Verzeichnis mit einem Passwort * verschlüsselt ist. Sie können es also nur mit diesem Passwort entschlüsseln.

Und wenn Sie der Meinung sind, dass es theoretisch möglich sein sollte, Ihren 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 verschlüsseln möchten, müssen Sie grundsätzlich Kennwörter verwenden. Verschlüsselte Home-Verzeichnisse sind aus demselben Grund nicht mit Fingerabdruck-Anmeldungen kompatibel.


* Ich weiß, es ist komplizierter als ein einzelnes Passwort, aber lassen Sie es uns vorerst einfach halten.

Ryan Thompson
quelle
Nun, die Antwort von djhowell hat einwandfrei funktioniert. Vermutlich ist mein Home-Verzeichnis mit einem Schlüssel verschlüsselt, den das Betriebssystem besitzt, und kann ihn zum Entschlüsseln verwenden. Außerdem weiß sshd beim SSHing-In nicht, wie ich mein Home-Verzeichnis entschlüsseln soll, sodass es nicht erklärt, warum es mit der Kennwortauthentifizierung funktioniert.
Josh
Warten Sie, wenn Sie sich über ssh anmelden, ohne Kennwörter einzugeben, wird Ihr verschlüsseltes Home-Verzeichnis tatsächlich aktiviert.
Ryan Thompson
Ja tut es. Und umounted wenn ich mich auslogge.
Josh
Nun, das ist merkwürdig. Ich bekomme das Verhalten, das ich in meiner Antwort beschreibe. Mein privates Verzeichnis wird nur gemountet, wenn mein Login ein Passwort enthält (speziell mein Login-Passwort). Ich frage mich, was Sie anders gemacht haben, damit es mit öffentlichen Schlüsseln funktioniert.
Ryan Thompson
@ Ryan Thompson verwenden Sie Ubuntu 9.10?
Josh
1

Wenn Sie das Standard-Setup nicht ändern möchten (ich möchte nicht, dass meine Dateien dort sind, wo ich sie erwarte), sollten Sie sich in meinem Beitrag ansehen, 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 ~/.sshmit der anderen. So ist es immer da.

Für die faulen Leute wie ich ist hier ein Skript, um es für Sie zu tun. Führen Sie es einfach als normaler Benutzer aus. Kein Root-Zugriff oder Berechtigungen erforderlich und keine Änderungen an der Serverkonfiguration 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 <[email protected]>

# 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
B. Davis
quelle
0

Sie können den sichereren öffentlichen Schlüssel zum Anmelden verwenden und dann Folgendes ausführen, um Ihr Verzeichnis nach der Eingabe Ihres Kennworts einzuhängen:

ecryptfs-mount-private

Wenn Sie die ~/README.txtDatei lesen , nachdem Sie sich über SSH angemeldet haben, werden Sie feststellen, dass Ihre Dateien nicht vorhanden sind, da das verschlüsselte Verzeichnis nicht bereitgestellt ist.

Sie sollten sowieso keine passwortlosen öffentlichen Schlüssel verwenden, um sich anzumelden. Schauen Sie sich ssh-agent für einen besseren Weg an.

Gaff
quelle