كيفية إضافة مفتاح خاص بشكل دائم مع SSH-ADD على Ubuntu؟ [مغلق

StackOverflow https://stackoverflow.com/questions/3466626

  •  28-09-2019
  •  | 
  •  

سؤال

لدي مفتاح خاص محمي بكلمة مرور للوصول إلى خادم عبر 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 لفعل هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top