كيفية إضافة مفتاح خاص بشكل دائم مع SSH-ADD على Ubuntu؟ [مغلق
سؤال
لدي مفتاح خاص محمي بكلمة مرور للوصول إلى خادم عبر SSH.
لديّان من أجهزة Linux (Ubuntu 10.04) وسلوك أمر SSH-ADD مختلفان في كل منهما.
في جهاز واحد ، بمجرد استخدام "SSH-ADD .SSH/Identity" وأدخلت كلمة المرور الخاصة بي ، تمت إضافة المفتاح بشكل دائم ، أي في كل مرة أقوم فيها بإغلاق الكمبيوتر وتسجيل الدخول مرة أخرى ، تمت إضافة المفتاح بالفعل.
في الآخر ، لا بد لي من إضافة المفتاح في كل مرة أقوم بتسجيل الدخول.
بقدر ما أتذكر ، فعلت نفس الشيء على كليهما. الفرق الوحيد هو أنه تم إنشاء المفتاح على المفتاح الذي يتم إضافته بشكل دائم.
هل يعرف أي شخص كيفية إضافته بشكل دائم إلى الجهاز الآخر أيضًا؟
المحلول
سيكون الحل هو إجبار الملفات الرئيسية على الاحتفاظ بها بشكل دائم ، عن طريق إضافتها في الخاص بك ~/.ssh/config
ملف:
IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer
إذا لم يكن لديك ملف "config" في دليل ~/.ssh ، فيجب عليك إنشاء واحد. لا يحتاج إلى حقوق الجذر ، لذلك ببساطة:
nano ~/.ssh/config
... وأدخل الخطوط أعلاه حسب متطلباتك.
لكي يعمل هذا ، يحتاج الملف إلى وجود CHMOD 600. يمكنك استخدام الأمر chmod 600 ~/.ssh/config
.
إذا كنت تريد أن يستخدم جميع المستخدمين على الكمبيوتر المفتاح وضع هذه الخطوط في /etc/ssh/ssh_config
والمفتاح في مجلد متاح للجميع.
بالإضافة إلى ذلك ، إذا كنت ترغب في تعيين المفتاح المحدد لمضيف واحد ، فيمكنك القيام بما يلي في ~/.ssh/config:
Host github.com
User git
IdentityFile ~/.ssh/githubKey
هذا له ميزة عندما يكون لديك العديد من الهويات التي لا يرفضها الخادم لأنك جربت الهويات الخاطئة أولاً. سيتم تجربة الهوية المحددة فقط.
نصائح أخرى
هذا لم يرد على نفس المشكلة بالنسبة لي تحت Mac OS X Lion. انتهى بي الأمر مضيفًا:
ssh-add ~/.ssh/id_rsa &>/dev/null
بالنسبة إلى .zshrc الخاص بي (لكن.
(كما هو مقترح هنا: http://geek.michaelgrace.org/2011/09/permany-add-ssh-key-ssh-add/ )
لقد قمت بحل هذه المشكلة على Mac OSX (10.10) باستخدام خيار -K لـ SSH -ADD:
ssh-add -K ~/.ssh/your_private_key
بالنسبة لـ MacOS 10.12 ، وبعد ذلك تحتاج إلى تحرير تكوين SSH الخاص بك كما هو موضح هنا: https://github.com/jirsbek/ssh-keys-in-macos-sierra-keychain
فقط أضف سلسلة المفاتيح ، كما هو مشار إليه في نصائح أوبونتو السريعةhttps://help.ubuntu.com/community/quicktips
ماذا او ما
بدلاً من بدء تشغيل SSH-Agent و SSH-ADD باستمرار ، من الممكن استخدام سلسلة المفاتيح لإدارة مفاتيح SSH الخاصة بك. لتثبيت سلسلة المفاتيح ، يمكنك فقط النقر هنا ، أو استخدام Synaptic للقيام بالمهمة أو APT-GET من سطر الأوامر.
سطر الأوامر
هناك طريقة أخرى لتثبيت الملف وهي فتح المحطة (Application-> الملحقات-> المحطة) والنوع:
sudo apt-get install keychain
تعديل ملف
يجب عليك بعد ذلك إضافة الأسطر التالية إلى $ {home}/. bashrc أو /etc/bash.bashrc:
keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh
لقد جربت حل @Aaron ولم ينجح الأمر بالنسبة لي ، لأنه سيعيد إضافة مفاتيحي في كل مرة فتحت فيها علامة تبويب جديدة في محطة بلدي. لذلك قمت بتعديله قليلاً (لاحظ أن معظم المفاتيح الخاصة بي هي أيضًا محمية بكلمة مرور ، لذا لا يمكنني فقط إرسال الإخراج إلى /dev /null):
added_keys=`ssh-add -l`
if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
ssh-add "$HOME/.ssh/my_key"
fi
ما يفعله هذا هو أنه يتحقق من إخراج ssh-add -l
(الذي يسرد جميع المفاتيح التي تمت إضافتها) لمفتاح معين وإذا لم يجدها ، فإنها تضيفها ssh-add
.
الآن في المرة الأولى التي أقوم فيها بفتح المحطة الخاصة بي ، طلبت من كلمات المرور الخاصة بمفاتيحي الخاصة ولم أطلب مرة أخرى حتى أعيد تشغيل (أو تسجيل الدخول - لم أتحقق) جهاز الكمبيوتر الخاص بي.
بما أن لدي مجموعة من المفاتيح ، أقوم بتخزين إخراج ssh-add -l
في متغير لتحسين الأداء (على الأقل أعتقد أنه يحسن الأداء :))
ملاحظة: أنا على Linux وذهب هذا الرمز إلى بلدي ~/.bashrc
ملف - إذا كنت على نظام التشغيل Mac OS X ، فأفترض أنه يجب عليك إضافته إلى .zshrc
أو .profile
تحرير: كما أشار من قبل Aaron في التعليقات ، .zshrc
يتم استخدام الملف من zsh
شل - لذلك إذا كنت لا تستخدم ذلك (إذا لم تكن متأكدًا ، فمن المحتمل أن تستخدم bash
بدلاً من ذلك) ، يجب أن يذهب هذا الرمز إلى .bashrc
ملف.
في حالتي كان الحل:
يجب أن تكون الأذونات على ملف التكوين 600.
chmod 600 config
كما ذكر في التعليقات أعلاه من قبل Generalopinion
لا حاجة لمس محتويات ملف التكوين.
واجهت نفس المشكلة على Ubuntu 16.04: تمت إضافة بعض المفاتيح بشكل دائم ، للآخرين اضطررت إلى تنفيذها ssh-add
في كل جلسة. اكتشفت أن المفاتيح التي تمت إضافتها بشكل دائم كانت على حد سواء المفتاح الخاص والعامة موجودة في ~/.ssh
والمفاتيح التي تم نسيانها في كل جلسة تحتوي فقط على مفاتيح خاصة في ~/.ssh
دير. لذا فإن الحل بسيط: يجب عليك النسخ على حد سواء المفتاح الخاص والعامة ل ~/.ssh
قبل التنفيذ ssh-add
.
على Ubuntu 14.04 (ربما في وقت سابق ، ربما لا يزال) لا تحتاج حتى إلى وحدة التحكم:
- بداية
seahorse
أو قم بتشغيل هذا الشيء الذي تجده في البحث عن "المفتاح" - قم بإنشاء مفتاح SSH هناك (أو استيراد واحد)
- لا حاجة لمغادرة عبارة المرور فارغة
- يتم تقديمه لك حتى دفع المفتاح العام إلى الخادم (أو أكثر)
- سوف ينتهي بك المطاف مع تشغيل وكيل SSH وهذا المفتاح محمل ، ولكن مغلق
- استخدام
ssh
سوف يلتقط الهوية (أي مفتاح) من خلال الوكيل - عند الاستخدام الأول أثناء الجلسة ، سيتم فحص عبارة المرور
- ولديك خيار فتح المفتاح تلقائيًا في تسجيل الدخول
- هذا يعني أنه سيتم استخدام مصادقة تسجيل الدخول لالتفاف عبارة الممر من المفتاح
- ملاحظة: إذا كنت ترغب في إعادة توجيه هويتك (أي عوامل-تتبع) استدعاء الخاص بك
ssh
مع-A
أو اجعل ذلك الافتراضي- وإلا لا يمكنك المصادقة بهذا المفتاح على جهاز تقوم بتسجيل الدخول لاحقًا إلى جهاز ثالث
أقوم بتشغيل Ubuntu باستخدام مفتاح id_rsa. (واحدة شخصية للعمل). سيتذكر SSH-Add مفتاحًا واحدًا (شخصيًا) وننسى الشركة في كل مرة.
التحقق من الفرق بين الاثنين اللذين رأيت مفتاحي الشخصي لديه 400 حقوق بينما كان لدى الشركة 600 حقوق. (كان u+w). إزالة المستخدم للكتابة مباشرة من مفتاح الشركة (UW أو تعيين إلى 400) إصلاح مشكلتي. يتذكر SSH-Add الآن كلا المفتاحين.
إضافة الأسطر التالية في "~/.bashrc" حل المشكلة بالنسبة لي. أنا أستخدم سطح المكتب Ubuntu 14.04.
eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"
بسيطة جدا ^ _ ^ خطوتين
1. youum تثبيت سلسلة المفاتيح
2. رمز ADD أدناه إلى .bash_profile
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
هذا عمل بالنسبة لي.
ssh-agent /bin/sh
ssh-add /path/to/your/key
بالنسبة لأولئك الذين يستخدمون قذيفة السمك ، يمكنك استخدام الوظيفة التالية ثم نسميها في ~/.config/fish/config.fish. سيقوم بتحميل جميع المفاتيح التي تبدأ ID_RSA داخل ال ssh-agent
.
# Load all ssh keys that start with "id_rsa"
function loadsshkeys
set added_keys (ssh-add -l)
for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
if test ! (echo $added_keys | grep -o -e $key)
ssh-add "$key"
end
end
end
# Call the function to run it.
loadsshkeys
إذا كنت تريد الحصول على ssh-agent
بدأت Auto عند فتح محطة يمكنك استخدامها Tuvistavie/Fish-Ssh-Agent لفعل هذا.