एन्क्रिप्टेड होमडियर के साथ उबंटू प्रणाली को अधिकृत_की के साथ एसएसएच?


38

मैंने हाल ही में उबंटू कर्म 9.10 के साथ एक नया सर्वर स्थापित किया, और जब मैंने अपनी होम डायरेक्टरी बनाई तो मैंने इसे एन्क्रिप्ट करने के लिए चुना। अब, मेरे अधिकृत_की फ़ाइल को ~ /। Ssh में लोड करने के बाद, यह पहचाना नहीं जाता है क्योंकि मेरे लॉग इन करने के बाद तक मेरे होम डायरेक्टरी को डिक्रिप्ट नहीं किया जाता है। क्या उबंटू के तहत एन्क्रिप्टेड होम डायरेक्ट्रीज़ के साथ SSH कीज़ बनाने का कोई तरीका है?


बेहतर टैग सुझावों का स्वागत किया, सुझाए गए टैगों में वास्तव में अच्छे मैच नहीं मिल सके।
जोश 20

1
मुझे लगता है कि वे वास्तव में हाजिर हैं। एक ubuntuटैग है, लेकिन मुझे नहीं लगता कि यह समस्या किसी विशेष OS के लिए विशिष्ट है।
क्वैक्ट क्विक्सोटे

उबंटू 11.10 में मेरे लिए इस समस्या का एक लक्षण यह है कि मशीन में ssh का पहला प्रयास यह है कि पासवर्ड प्रमाणीकरण की आवश्यकता है (क्योंकि authorized_keysअभी तक सुलभ नहीं है)। यदि मैं एक और ssh कनेक्शन, मुख्य प्रमाणीकरण लॉन्च करता हूं तो काम करता है।
नासमझ।पंडा

जवाबों:


39

इस पंक्ति को अपनी sshd_config फ़ाइल में बदलें:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

और फिर अपनी अधिकृत_की / फाइल को / etc / ssh / अपने-उपयोगकर्ता नाम / अधिकृत_की को स्थानांतरित करें

यह पोस्ट इसे हल करने का एक और तरीका है।


1
मैंने सोचा कि पहला समाधान सही लग रहा था, लेकिन यह मेरे लिए काम नहीं करता था। यकीन नहीं है कि क्यों। लेकिन आप जिस पोस्ट से जुड़े हैं वो बहुत काम की है। धन्यवाद!
जोश

3
जोश - क्या लक्ष्य उपयोगकर्ता उन फ़ाइलों का स्वामी है, और अनुमतियाँ 600 (dir के लिए 700)?
NVRAM

1
पूर्ण निर्देशों के लिए इस लिंक को देखें: Ubuntu पर SSH कीज़ । समस्या निवारण अनुभाग पर नीचे स्क्रॉल करें।
jjeaton

8

यह समाधान इस पोस्ट से प्रेरित था । IMHO यह आपके / etc / ssh / sshd_config को संशोधित करने से बहुत बेहतर है क्योंकि इसमें रूट एक्सेस की आवश्यकता नहीं है।

# 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
क्या आप यह वास्तव में क्या करते हैं का एक सारांश विवरण प्रदान कर सकते हैं?
नासमझ।पंडा

आपकी सार्वजनिक कुंजी (रों) जिसके साथ आप के लिए मशीन का उपयोग करना चाहते हैं बचाने आप: मैं समझाने के लिए क्या होता है एक संपादन किया authorized_keysमें /home/**.ecryptfs**/$USERएन्क्रिप्शन और इसे करने के लिए लिंक के बिना से तुम घर अपने एन्क्रिप्ट नहीं किए गए घर के रूप में रूप में अच्छी तरह एन्क्रिप्टेड। .profileआपके अनएन्क्रिप्टेड होम में नया , आपके एन्क्रिप्टेड होम डायरेक्टरी को "cd" में माउंट करेगा और आपके रियल को सोर्स करेगा .profile
LiveWireBT

एक नए 16.04 इंस्टॉलेशन के अनुसार काम करता है। कुछ टिप्पणियां: अनएन्क्रिप्टेड होम लिखने योग्य नहीं था (जो समझ में आता है, आप नहीं चाहते हैं कि उपयोगकर्ता गलती से डेटा संग्रहीत करके सब कुछ वापस कर दें) इसलिए अनुमतियों को अस्थायी रूप से बदल दें। इसके अलावा, टर्मिनल से यह सब करना है, GUI और lightdm से लॉग आउट किया गया है या जिसे कभी आप बंद कर रहे हैं का उपयोग कर रहे हैं। ecryptfs-mount-privateसार्वजनिक कुंजी के माध्यम से सफल लॉगिन के बाद हर बार उपयोगकर्ता पासवर्ड के लिए पूछता है जब तक आप जीयूआई में लॉग इन नहीं होते हैं। मेरा संपादन यहाँ कुछ डॉक्यूमेंट के साथ कुछ इको की जगह लेता है, यह टाइप करने के लिए कम दोहराव वाला है, इससे भ्रमित न हों।
LiveWireBT

2

मैंने बस इसके साथ खिलवाड़ करने में कुछ समय बिताया है, और इसका जवाब यह है कि यह बहुत अधिक मौलिक रूप से असंभव है। यह है ssh के माध्यम से passwordless सार्वजनिक कुंजी-प्रमाणीकृत लॉगिन स्थापित करने के लिए है, तो आप अपना पासवर्ड को टाइप करने के लिए की जरूरत नहीं है संभव में प्रवेश करें , लेकिन वह कहीं भी आप नहीं मिलता है, क्योंकि अपने घर निर्देशिका अभी भी एन्क्रिप्टेड है।

सरल तथ्य यह है कि आपके एन्क्रिप्टेड होम डायरेक्टरी को पासवर्ड * के साथ एन्क्रिप्ट किया गया है, इसलिए इसे डिक्रिप्ट करने का एकमात्र तरीका उस पासवर्ड के साथ है।

और यदि आप सोच रहे हैं कि सिद्धांत रूप में, लॉगिन पर माउंट पासफ़्रेज़ को डिक्रिप्ट करने के लिए आपकी ssh कुंजी का उपयोग करना संभव होना चाहिए, तो यह काम नहीं करेगा क्योंकि आपकी निजी कुंजी कभी भी सर्वर पर नहीं भेजी जाती है।

तो मूल रूप से, यदि आप एन्क्रिप्शन चाहते हैं, तो आपको पासवर्ड का उपयोग करना होगा। एन्क्रिप्टेड होम डायरेक्टरीज़ उसी कारण से फ़िंगरप्रिंट लॉगिन के साथ असंगत हैं।


* मुझे पता है कि यह एक पासवर्ड की तुलना में अधिक जटिल है, लेकिन चलो इसे अभी के लिए सरल रखें।


ठीक है, djhowell के जवाब ने पूरी तरह से काम किया है, संभवतः मेरे घर की निर्देशिका को एक कुंजी के साथ एन्क्रिप्ट किया गया है जो ओएस को डिक्रिप्ट करने के लिए उपयोग करने में सक्षम है। इसके अलावा, जब SSHing, sshd को पता नहीं है कि मेरे होम डायरेक्टरी को डिक्रिप्ट कैसे किया जाए, ताकि यह स्पष्ट न हो सके कि यह पासवर्ड प्रमाणीकरण के साथ क्यों काम करता है।
जोश

रुको, तो जब आप किसी भी पासवर्ड को टाइप किए बिना ssh के माध्यम से लॉग इन करते हैं, तो आपका एन्क्रिप्टेड होम डायरेक्टरी वास्तव में माउंट हो जाता है?
रेयान सी। थॉम्पसन

हाँ यह करता है। और जब मैं बाहर लॉग इन umounted।
जोश

खैर, यह अजीब है। मुझे वह व्यवहार मिलता है जिसका मैं अपने उत्तर में वर्णन करता हूं। यदि मेरा लॉगिन एक पासवर्ड (विशेष रूप से, मेरा लॉगिन पासवर्ड) शामिल है, तो मेरी निजी डीआईआर केवल घुड़सवार होती है। मुझे आश्चर्य है कि सार्वजनिक कुंजी के साथ काम करने के लिए आपने इसे अलग तरह से क्या किया।
रयान सी। थॉम्पसन

@ रियान थॉम्पसन क्या आप उबंटू 9.10 का उपयोग कर रहे हैं?
जोश

1

यदि आप डिफ़ॉल्ट सेटअप को संशोधित करना पसंद नहीं करते हैं (मैं नहीं, मुझे अपनी फाइलें पसंद हैं जहां मैं उनसे उम्मीद करता हूं) तो आप मेरी पोस्ट पर एक नज़र डालना चाहते हैं कि यह कैसे करना है:

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

संक्षेप में। आप अपने उपयोगकर्ता के एन्क्रिप्टेड संस्करण में अपनी चाबियाँ डालते हैं ~/.sshऔर ~/.sshदूसरे के एन्क्रिप्टेड संस्करण को सहानुभूति देते हैं । इस तरह यह हमेशा होता है।

अपने जैसे आलसी लोगों के लिए, यहाँ एक स्क्रिप्ट आपके लिए है। बस इसे सामान्य उपयोगकर्ता के रूप में चलाएं। किसी रूट एक्सेस या अनुमतियों की आवश्यकता नहीं है और सर्वर कॉन्फ़िगरेशन की आवश्यकता नहीं है। शुद्ध सामान्य उपयोगकर्ता सेटिंग्स।

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

आप लॉगिन करने के लिए अधिक सुरक्षित सार्वजनिक कुंजी का उपयोग कर सकते हैं, और फिर अपने पासवर्ड में टाइप करने के बाद अपनी निर्देशिका को माउंट करने के लिए निम्नलिखित को निष्पादित कर सकते हैं:

ecryptfs-mount-private

~/README.txtSSH के माध्यम से लॉग इन करने के बाद फ़ाइल पढ़ें , आप पाएंगे कि आपके पास आपकी फाइलें नहीं हैं क्योंकि एन्क्रिप्टेड निर्देशिका माउंट नहीं है।

आपको वैसे भी लॉगिन करने के लिए पासवर्ड रहित सार्वजनिक-कुंजियों का उपयोग नहीं करना चाहिए। बेहतर तरीके से ssh-Agent को देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.