SSH dengan otor_keys ke sistem Ubuntu dengan homedir terenkripsi?

38

Baru-baru ini saya membuat server baru dengan Ubuntu karmic 9.10, dan ketika saya membuat direktori home saya memilih untuk membuatnya terenkripsi. Sekarang, setelah memuat file otor_keys saya ke ~ / .ssh, itu tidak dikenali karena direktori home saya tidak didekripsi sampai setelah saya login. Apakah ada cara untuk membuat kunci SSH bekerja dengan direktori home terenkripsi di bawah Ubuntu?

Josh
sumber
Saran tag yang lebih baik disambut, tidak dapat menemukan kecocokan yang sangat baik di tag yang disarankan.
Josh
1
Saya pikir mereka tepat, sebenarnya. ada ubuntutag tetapi saya tidak berpikir masalah ini khusus untuk OS tertentu.
Quack quixote
Gejala dari masalah ini bagi saya di Ubuntu 11.10 adalah bahwa upaya pertama untuk ssh ke dalam mesin adalah diperlukan otentikasi kata sandi (karena authorized_keysbelum dapat diakses). Jika saya meluncurkan koneksi ssh lain, otentikasi kunci kemudian berfungsi.
mindless.panda

Jawaban:

39

Ubah baris ini di file sshd_config Anda:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

Dan kemudian pindahkan file otor_keys Anda ke / etc / ssh / your-username / otor_keys

Posting ini mendokumentasikan cara lain untuk menyelesaikan ini.

djhowell
sumber
1
Saya pikir solusi pertama terdengar sempurna tetapi tidak berhasil untuk saya. Tidak yakin kenapa. Tetapi pos yang Anda tautkan berfungsi dengan baik. Terima kasih!
Josh
3
Josh - adalah pengguna target pemilik file-file itu, dan izin 600 (700 untuk dir)?
NVRAM
1
Lihat tautan ini untuk instruksi lengkap: Kunci SSH di Ubuntu . Gulir ke bawah ke bagian pemecahan masalah.
jjeaton
8

Solusi ini terinspirasi oleh pos ini . IMHO itu jauh lebih baik daripada memodifikasi / etc / ssh / sshd_config Anda karena tidak memerlukan akses root sama sekali.

# 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
sumber
3
Bisakah Anda memberikan ringkasan pernyataan tentang apa yang sebenarnya dilakukannya?
mindless.panda
Saya membuat mengedit untuk menjelaskan apa yang terjadi: Anda menyimpan kunci publik Anda (s) yang Anda ingin mengakses mesin untuk authorized_keysdi /home/**.ecryptfs**/$USERtanpa enkripsi dan link dari Anda dienkripsi rumah serta rumah tidak terenkripsi Anda. Yang baru .profiledi rumah Anda yang tidak terenkripsi harus memasang direktori rumah terenkripsi Anda, "cd" ke dalamnya dan sumber asli Anda .profile.
LiveWireBT
Bekerja sebagaimana dimaksud pada instalasi 16,04 baru. Beberapa komentar: rumah yang tidak dienkripsi tidak dapat ditulis (yang masuk akal, Anda tidak ingin pengguna menumbangkan semuanya dengan secara tidak sengaja menyimpan data di sana) jadi ubah izin untuk sementara waktu. Kita juga harus melakukan semua ini dari terminal, keluar dari GUI dan lightdm atau yang pernah Anda gunakan dihentikan. ecryptfs-mount-privatememinta kata sandi pengguna setiap kali setelah berhasil masuk melalui kunci publik kecuali Anda masuk ke GUI. Hasil edit saya menggantikan beberapa gema dengan dokumen di sini, ini kurang berulang untuk diketik, jangan bingung dengan itu.
LiveWireBT
2

Saya hanya menghabiskan waktu untuk bermain-main dengan ini, dan jawabannya adalah bahwa hal itu sangat tidak mungkin. Hal ini dimungkinkan untuk mengatur memasukkan password login public-key-dikonfirmasi melalui ssh, sehingga Anda tidak perlu mengetikkan password Anda untuk log in , tapi itu tidak membuat Anda di mana saja, karena direktori home Anda masih dienkripsi.

Fakta sederhananya adalah direktori home terenkripsi Anda dienkripsi dengan kata sandi *, jadi satu-satunya cara untuk mendekripsi adalah dengan kata sandi itu.

Dan jika Anda berpikir bahwa secara teori itu mungkin untuk menggunakan kunci ssh Anda untuk mendekripsi passphrase mount saat login, itu tidak akan berhasil karena kunci pribadi Anda tidak pernah dikirim ke server sama sekali.

Jadi pada dasarnya, jika Anda ingin enkripsi, Anda harus menggunakan kata sandi. Direktori rumah terenkripsi tidak kompatibel dengan login sidik jari untuk alasan yang sama.


* Saya tahu ini lebih rumit daripada kata sandi tunggal, tetapi mari kita buat sederhana untuk saat ini.

Ryan C. Thompson
sumber
Yah, jawaban djhowell bekerja dengan sempurna sehingga mungkin direktori home saya dienkripsi dengan kunci yang dimiliki OS dan dapat digunakan untuk mendekripsi. Selain itu, ketika SSHing masuk, sshd tidak tahu cara mendekripsi direktori rumah saya, jadi itu tidak menjelaskan mengapa ia bekerja dengan otentikasi kata sandi.
Josh
Tunggu, jadi ketika Anda masuk melalui ssh tanpa mengetikkan kata sandi apa pun, direktori rumah terenkripsi Anda akan di-mount?
Ryan C. Thompson
Ya, benar. Dan umounted ketika saya logout.
Josh
Yah, itu aneh. Saya mendapatkan perilaku yang saya jelaskan dalam jawaban saya. Dir pribadi saya hanya akan dipasang jika login saya melibatkan kata sandi (khususnya, kata sandi login saya). Saya ingin tahu apa yang Anda lakukan secara berbeda untuk membuatnya berfungsi dengan kunci publik.
Ryan C. Thompson
@Ryan Thompson apakah Anda menggunakan Ubuntu 9,10?
Josh
1

Jika Anda tidak suka mengubah pengaturan default (saya tidak suka, saya suka file saya berada di tempat yang saya harapkan) maka Anda mungkin ingin melihat posting saya tentang cara melakukan itu:

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

Pendeknya. Anda meletakkan kunci Anda di versi terenkripsi dari pengguna Anda ~/.sshdan symlink ke versi terenkripsi dari ~/.sshyang lain. Dengan cara ini selalu ada di sana.

Untuk orang-orang malas seperti saya, berikut ini skrip untuk melakukannya untuk Anda. Jalankan saja sebagai pengguna biasa. Tidak diperlukan akses root atau izin dan tidak ada perubahan konfigurasi server yang diperlukan. Pengaturan pengguna normal murni.

#!/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
sumber
0

Anda dapat menggunakan kunci publik yang lebih aman untuk masuk, dan kemudian jalankan yang berikut untuk memasang direktori Anda setelah mengetik kata sandi Anda:

ecryptfs-mount-private

Baca ~/README.txtfile setelah masuk melalui SSH, Anda akan menemukan bahwa Anda tidak memiliki file Anda karena direktori terenkripsi tidak di-mount.

Anda seharusnya tidak menggunakan kunci publik tanpa kata sandi untuk login. Lihatlah ssh-agent untuk cara yang lebih baik.

Taji
sumber