Yetkili_ tuşlarıyla SSH şifreli homedir ile Ubuntu sistemine mi?


38

Geçenlerde Ubuntu karmic 9.10 ile yeni bir sunucu kurdum ve giriş dizinimi oluştururken şifreli hale getirmeyi seçtim. Yetki_ tuşları dosyamı ~ / .ssh dosyasına yükledikten sonra, giriş dizinim şifresini çözmediği için tanınmıyor çünkü SSH anahtarlarını Ubuntu altındaki şifreli giriş dizinleriyle çalışmanın bir yolu var mı?


Daha iyi etiket önerileri memnuniyetle karşılandı, önerilen etiketlerde gerçekten iyi eşleşme bulamadı.
Josh

1
Aslında, bunların yerinde olduğunu düşünüyorum. Bir ubuntuetiket var ama bu sorunun belirli bir işletim sistemine özgü olduğunu sanmıyorum.
quack quixote

Ubuntu 11.10’da benim için bu sorunun bir belirtisi, makineye ilk ssh denemenin şifre kimlik doğrulamasının gerekli olduğudur (çünkü authorized_keyshenüz erişilebilir değil). Başka bir ssh bağlantısı başlatırsam, ardından anahtar doğrulaması çalışır.
mindless.panda

Yanıtlar:


39

Bu satırı sshd_config dosyanızda değiştirin:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

Ve sonra yetkili_keyler dosyanızı / etc / ssh / kullanıcı adınız / yetkili_keyler dizinine taşıyın

Bu yazı, bunu çözmenin başka bir yolunu belgeler.


1
İlk çözümün mükemmel göründüğünü düşündüm ama benim için işe yaramadı. Emin değilim neden. Ama bağladığınız gönderi çok iyi çalıştı. Teşekkürler!
Josh,

3
Josh - hedef kullanıcı bu dosyaların sahibi ve izinleri 600 (dir için 700)?
NVRAM

1
Talimatların tamamı için bu bağlantıya bakın: Ubuntu'daki SSH Anahtarları . Sorun giderme bölümüne ilerleyin.
jjeaton

8

Bu çözüm bu esinlenerek yazılan . IMHO, / etc / ssh / sshd_config'inizi değiştirmektan çok daha iyidir, çünkü hiç root erişimi gerektirmez.

# 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

3
Bunun gerçekte ne yaptığına dair bir özet ifade verebilir misiniz?
mindless.panda

Size sizin ortak anahtar size makineyi erişmek istediğiniz ile (ler) tasarruf: Ben ne olduğunu açıklamak için bir düzenleme yapılmış authorized_keysiçinde /home/**.ecryptfs**/$USERsize şifresiz ev hem de ev şifreli dan kendisine şifreleme ve bağlantı olmadan. .profileŞifrelenmemiş evinizdeki yeni , şifreli ev dizininizi, "cd" kodunu eklemeli ve gerçek kaynaklarınızı sağlamalıdır .profile.
LiveWireBT

Yeni bir 16.04 kurulumunda tasarlandığı şekilde çalışır. Birkaç açıklama: şifrelenmemiş ev yazılabilir değildi (bu mantıklı, kullanıcıların yanlışlıkla verileri saklayarak her şeyi altüst etmelerini istemiyorsunuz) bu nedenle izinleri geçici olarak değiştirin. Ayrıca bunların hepsini terminalden yapmak, GUI'den ve lightdm'den çıkmak veya kullanmakta olduğunuz DM'yi durdurmak zorunda. ecryptfs-mount-privateGUI'ye giriş yapmazsanız, genel şifrelerle başarılı bir giriş yaptıktan sonra kullanıcı şifresini her zaman ister Düzenlemem, birkaç ekoyu burada bir belge ile değiştirir, yazması daha az tekrarlanır, bununla karıştırmayın.
LiveWireBT

2

Ben sadece bununla uğraşırken biraz zaman geçirdim ve cevap, bunun temel olarak imkansız olduğu. O ise size şifrenizi yazmak zorunda kalmamak için, ssh ile şifresiz açık anahtarlı-doğrulanmış oturum ayarlayabilirsiniz mümkün giriş , ama ev dizini hala şifreli olduğu için bu, her yerde almaz.

Basit gerçek, şifreli ana dizininizin bir şifreyle * şifrelenmiş olmasıdır, bu yüzden şifresini çözmenin tek yolu bu şifreyle olmasıdır.

Ve eğer teoride, giriş sırasında mount parolasını çözmek için ssh anahtarınızı kullanmanın mümkün olabileceğini düşünüyorsanız, bu işe yaramaz çünkü özel anahtarınız hiçbir zaman sunucuya gönderilmez.

Temel olarak, şifreleme istiyorsanız, şifreleri kullanmanız gerekir. Şifrelenmiş ev dizinleri aynı sebepten dolayı parmak izi girişleriyle uyumlu değildir.


* Tek bir şifreden daha karmaşık olduğunu biliyorum, fakat şimdilik basit tutalım.


Pekala, djhowell'in cevabı mükemmel çalıştı, muhtemelen ev dizinim işletim sisteminin sahip olduğu ve şifresini çözmek için kullanabileceği bir anahtarla şifrelenmiş oldu. Ayrıca, SSHing girdiğinde, sshd ev yönlendirmemin şifresini nasıl çözeceğimi bilmiyor, bu yüzden şifre doğrulama ile neden çalıştığını açıklamıyor.
Josh,

Hiç sifre yazmadan ssh ile giriş yaptığınızda, şifreli ana dizininiz gerçekten bağlanmış mı?
Ryan Thompson

Evet öyle. Ve oturumu kapattığımda sayılır.
Josh

Bu çok garip. Cevabımda tarif ettiğim davranışları alıyorum. Özel direktörüm yalnızca giriş bilgilerim bir şifre içeriyorsa bağlanır (özellikle giriş şifrem). Genel anahtarlarla çalışmasını sağlamak için farklı neler yaptığını merak ediyorum.
Ryan Thompson

@Ryan Thompson Ubuntu 9.10 kullanıyor musunuz?
Josh

1

Varsayılan ayarları değiştirmekten hoşlanmıyorsanız (Yapmam, dosyalarımın olmasını beklediğim yerde olmasını seviyorum) o zaman bunun nasıl yapılacağı ile ilgili yazıma bir göz atmak isteyebilirsiniz:

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

Kısacası. Anahtarlarınızı, kullanıcının şifreli sürümüne koyar ~/.sshve şifreli sürümünü ~/.sshdiğerine bağlarsınız . Bu şekilde her zaman orada.

Benim gibi tembel insanlar için, işte senin için yapacak bir senaryo. Sadece normal kullanıcı olarak çalıştırın. Kök erişimi veya izin gerekmez ve sunucu yapılandırması değişikliği gerekmez. Saf normal kullanıcı ayarları.

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

Giriş yapmak için daha güvenli ortak anahtarı kullanabilir ve daha sonra şifrenizi yazdıktan sonra dizinizi bağlamak için aşağıdakileri uygulayabilirsiniz:

ecryptfs-mount-private

~/README.txtSSH ile oturum açtıktan sonra dosyayı okuyun, şifreli dizin takılı olmadığından dosyalarınızın olmadığını görürsünüz.

Yine de giriş yapmak için şifresiz genel anahtarları kullanmamalısınız. Daha iyi bir yol için ssh-agent'a bakın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.