سؤال كيف أقوم بإعداد SSH حتى لا أحتاج إلى كتابة كلمة المرور الخاصة بي؟


كيف أقوم بإعداد SSH حتى لا أحتاج إلى كتابة كلمة المرور الخاصة بي عند الاتصال بمضيف؟


137
2017-07-18 16:51


الأصل


قد يجادل المرء إذا كان استخدام مثل هذه المفاتيح لا يتطلب كلمة مرور. لتجنب أن أي شخص يحصل على مفتاحك الخاص يمكنه بالفعل إساءة استخدامه ، يمكن للمرء أن يحمي المفتاح بواسطة كلمة مرور خاصة به. بالطبع ، يمكن للمرء ترك كلمة المرور هذه فارغة ، ولكن هناك العديد من الحالات التي لا يوصى فيها بذلك. - Arjan
على أحدث Cygwin مع أحدث SSH ، كنت أعيد المطالبة لأنني بحاجة إلى إجراء تغيير في بلدي ~/.ssh/config هذا هو المطلوب الآن PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss* - HDave


الأجوبة:


إنشاء مفتاح SSH (إذا لم يكن لديك مفتاح)

إذا كنت تستخدم جنوم ، فإن فرس البحر التطبيق ("كلمات المرور ومفاتيح التشفير") يمكنه القيام بذلك نيابة عنك: ملف -> الجديد -> تأمين مفتاح شل.

إذا كنت تفضل محطة ، قم بتشغيل ssh-keygen -t <نوع> لتوليد مفتاح. الأنواع الصحيحة من المفاتيح هي:

  • RSA: الافتراضي
  • dsa: مكافئ أكثر أو أقل ، باستثناء القيود المفروضة على مفاتيح 1024 بت
  • ecdsa: نفس الأمان مع مفاتيح أصغر ، ولكنها جديدة نسبيا ونادرة إلى حد ما في برمجيات SSH.
  • ed25519: أمان عالي (أكثر مقاومة لهجمات القنوات الجانبية ومولدات الأرقام العشوائية الضعيفة). جيل توقيع سريع جدا. جديد جدا. متاح فقط في OpenSSH> = 6.5.

البرنامج سوف يطلب منك عبارة المرور ومكان لحفظ المفتاح الجديد. من المستحسن استخدام المسار الافتراضي المقترح لأن جميع الأدوات الأخرى ستبحث عنه هناك.

قم بتحميل المفتاح العام إلى الخادم البعيد

مرة أخرى، فرس البحر يمكن أن يفعل ذلك لك - في مفاتيحي الشخصية، انقر بزر الماوس الأيمن على مفتاح SSH الخاص بك واختر تكوين مفتاح لقفل آمن.

أو، ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host في المحطة.

أو ، خطوة بخطوة يدويًا تمامًا:

  1. قم بإنشاء دليل (إذا لم يكن موجودًا بالفعل) مسمى .ssh في الدليل الرئيسي للمستخدم البعيد على المضيف البعيد.
  2. في هذا الدليل ، قم بإنشاء ملف مسمى authorized_keys (إذا لم تكن موجودة بالفعل).
  3. في حالة جهاز التحكم عن بعد umask أكثر ليبرالية من المعتاد ، اجعل الملف غير قابل للكتابة للمجموعة: chmod go-w ~/.ssh ~/.ssh/authorized_keys.
  4. أخيرا ، نسخ بطريقة أو بأخرى (إلحاق) محتويات المحلية الخاصة بك المفتاح العمومي (~/.ssh/id_rsa.pub) في جهاز التحكم عن بعد ~/.ssh/authorized_keys ملف.

قم بتحميل المفتاح إلى وكيل ssh

إذا قمت بتحميل المفتاح الخاص بك في سه وكيل، فإنه سيتم الاحتفاظ المفتاح فك تشفير في الذاكرة. نريد أن يتجنب هذا إعادة إدخال كلمة المرور عندما نطرحها في خادم.

أولاً ، يجب بدء العامل أو تحميل مسار مأخذ توصيل تم إطلاقه في متغير. جري سه وكيل على محطة سوف تولد أوامر لتعيين وإعداد المتغيرات وكيل. يمكن حفظ هذه الأوامر في ملف للاستخدام في محطة مختلفة. بدلا من ذلك ، يمكن للمرء تشغيل هذه الأوامر ونسيان إعادة استخدام نفس الوكيل في محطة أخرى. منها مثلا: eval $(ssh-agent).

تحميل المفتاح هو مسألة بسيطة في التنفيذ ssh-add ويعطيها عبارة المرور.

إذا كنت تستخدم جنوم ، جنوم كيرينغ-الخفي عادة ما يوفر نفس وظيفة وكيل SSH كعامل ssh ، لذلك لا يجب عليك بدء أي شيء. سيقوم GNOME تلقائيًا بتحميل المفتاح وفتحه عند تسجيل الدخول أيضًا.

شل في الخادم البعيد دون كلمة مرور

إذا تم كل شيء بشكل صحيح ، وذلك باستخدام ssh المستخدم @ الخادملن يطالبك بكلمة مرور. إذا كان هناك خطأ ما في الوكيل وليس المفتاح ، فسيطلب منك كتابة عبارة المرور للمفتاح ، وليس كلمة المرور لحساب المستخدم.

أي شيء يستخدم ssh للاتصال سيعمل دون إدخال كلمة مرور حساب المستخدم عند تحميل المفتاح الصحيح في البرنامج الوسيط. برامج مثل اللجنة الدائمة، بالنشر و رسينك استفد من هذا.


ملاحظات:

  • تحتاج فقط إلى مفتاح SSHv2 ، لأن SSHv1 غير آمن وغير مستخدم الآن.
  • تحتاج أيضًا إلى نوع واحد فقط من المفاتيح - يكفي إما RSA أو DSA. (ed25519 و ECDSA كلاهما حديثان ، وبالتالي لا يتم دعمهما في كل مكان).
  • كل هذه الخطوات هي نفسها لكل من مفاتيح RSA و DSA. إذا كنت تستخدم DSA ، فاستخدم id_dsa بدلا من id_rsaوسوف يكون ECDSA id_ecdsa.
  • خوادم OpenSSH الأقدم من 3.0 المستخدمة authorized_keys2 - ولكن من المستبعد حقًا العثور على أي شيء أقدم من 5.0 قيد الاستخدام.
  • تنطبق هذه الإرشادات على الإصدار 3.0 من OpenSSH والإصدار الأحدث فقط. lsh، ssh.com، ولا يتم تضمين خوادم SSH (يونكس وليس أخرى) في هذا البرنامج التعليمي.

أمثلة:

  • نسخ المفتاح العمومي إلى مضيف بعيد:

    ssh-copy-id -i ~ / .ssh / id_rsa.pub myaccount @ remotehost # this
    
    cat ~ / .ssh / id_rsa.pub | ssh myaccount @ remotehost \
          mkdir -p ~ / .ssh؛ القط >> ~ / .ssh / authorized_keys '# أو هذا
    
  • متغيرات عامل الادخار لإعادة الاستخدام (مثال مفصل)
    ssh-agent> ~ / .ssh / cross-terminal-agent
    . ~ / .ssh / عبر محطة وكيل
    

153



آه ، عليك أن تقول "ssh-add {path-to-private-key-file}" ثم ستطلب منك كلمة المرور الخاصة بك. يرجى جعل هذا أكثر وضوحا في مشاركتك. يجب عليك أيضا إضافة "الرابع ، تشغيل ssh". جزء من المشكلة مع الوثائق مع هذه الأشياء هو أنه يتخطى خطوات تبدو واضحة ليست واضحة لشخص جديد في العملية ليس لديه فكرة عما يجري وكيف تعمل هذه البرامج معا. - Jason S
Jason: ssh-add -l هو التحقق من تشغيل الوكيل. سيضيف ssh-add بدون وسيطات المفتاح من الموقع الافتراضي (وهو ~ / .ssh / id_rsa). على أي حال ، تحديث. - grawity
هناك أمر ssh-copy-id يقوم بنسخ المفتاح العام إلى المضيف الهدف ويقوم بتعيين الأذونات تلقائيًا. - hasen
جواب رائع! يفتقد قليلاً حول أذونات الملفات للملفات الرئيسية - لقد كان لدي مشكلة تتعلق بذلك اليوم. يجب أن يكون ملف المفتاح الخاص متاحًا لي فقط ، ويجب أن يكون ملف المفتاح العام قابلاً للكتابة بواسطتي فقط. - ripper234
بطانة واحدة: ssh-keygen -f ~/.ssh/id_rsa -N "";ssh-copy-id -i ~/.ssh/id_rsa username@server-ip-or-address (فقط استبدال username@server-ip-or-address). - totymedli


لم تقم بتحديد Unix الذي تستخدمه ، وما الذي تتصل به Unix ، وما هي shell الذي تستخدمه ، وما هو نوع SSH الذي تستخدمه ، وما إلى ذلك. قد يحتاج بعض هذا إلى التعديل قليلاً ؛ هذا يعتمد على الإصدارات الحديثة إلى حد معقول من OpenSSH ، والتي تستخدم في الكثير من المتغيرات unix.

هذا كله من نظام سطح المكتب المحلي الخاص بك.

ssh-keygen

تأكد من استخدام الافتراضي لاسم المفتاح. اقترح انك فعل ضع عبارة مرور على هذا المفتاح ، وإلا فهي مشكلة أمنية. "-t rsa" لن تكون فكرة سيئة ، لكن ربما لا تكون هناك حاجة إليها.

ssh-copy-id username@server

سيطلب منك ذلك كلمة المرور التي تستخدمها لتسجيل الدخول ، وإعداد عناصر authorized_keys لك. (لا حاجة للقيام بذلك باليد)

ثم هذا:

`ssh-agent`

أو ربما هذا:

exec ssh-agent sh

أو:

exec ssh-agent bash

سيؤدي ذلك إلى بدء وكيل SSH يمكنه الاحتفاظ بمفتاحك. في العديد من متغيرات Unix الحديثة ، إذا كنت قد قمت بتسجيل الدخول بيانياً ، فإن هذا قد حدث بالفعل. أول متغير (مع backticks) يضع عامل ssh في الخلفية ويضع متغيرات البيئة للتحدث إليه. أما الثانية فتعمل على تشغيل الوكيل نيابة عنك ، بحيث يخرج الوكيل عندما تخرج من الصدفة.

العديد من المتغيرات الحديثة من يونيكس سيكون لديها بالفعل وكيل يعمل لك ، خاصة إذا قمت بتسجيل الدخول بيانياً. قد تحاول "ps aux | grep ssh-agent"أو"ps -ef | grep ssh-agent"؛ إذا كان هناك شيء ما قيد التشغيل بالفعل ، فاستخدم ذلك.

و أخيرا:

ssh-add

سوف يسأل عن عبارة المرور. اعطها واحدة اعطيتها ssh-keygen. هناك أيضا طرق لجعلها تطلب بيانيا. ويمكنك وضع ssh-agent و ssh-add في نصوص تسجيل الدخول (يختلف الإعداد حسب الصدفة التي تستخدمها) لأتمتة هذا ، ولكن بعض المتغيرات في Unix (Ubuntu Linux الحالية ، على سبيل المثال) تقوم بمعظمها تلقائيًا ، لذلك أن كل ما عليك فعله هو إنشاء مفتاح واستخدام ssh-copy-id لإعداده على المضيف البعيد.

الآن، "ssh username@server"يجب أن تعمل بدون طلب أي مصادقة. وراء الكواليس ، يتم استخدام المفتاح الذي يحتفظ به عميل ssh ، ويطلب من الوكيل القيام بالحيل السحرية للتوقيع عليه.


18





من الممكن القيام بذلك في المعجون على ويندوز كذلك.

وبمجرد الانتهاء من إعداد زوج المفاتيح العام / الخاص (كما تظهر الإجابات الأخرى هنا) ، قم بتشغيل PuttyGen. في هذه الصفحة ، قم بتحميل المفتاح الخاص الموجود الذي قمت بإعداده بالفعل ، ثم احفظه كمفتاح خاص PuTTY (ppk).

ثم في PuTTY ، ما عليك سوى النقر على الجلسة المحفوظة التي تريد تسجيل الدخول التلقائي إليها والنقر على تحميل. من هنا ، انتقل إلى الاتصال -> البيانات في الجزء الأيمن ، وفي نوع "اسم المستخدم التلقائي لتسجيل الدخول" في اسم المستخدم لهذا الخادم البعيد:

PuTTY username entry

بعد ذلك انتقل إلى اتصال -> SSH -> Auth ، وتصفح ل ppk التي قمت بها في PuttyGen:

PuTTY private key entry

ثم ارجع إلى صفحة الجلسة واحفظ الجلسة التي قمت بتحميلها مسبقًا.


11



يبدو أن رابط الصورة الأول "إدخال اسم مستخدم PuTTY" مكسور. - Peter Mortensen
يتضمن PuTTY نسخته الخاصة من ssh-agent؛ انها تسمى مسابقة ملكة جمال. يعمل في علبة النظام ويحمل المفتاح الخاص بك. لا تحتاج إلى تشغيل ssh-agent ، فقط قم بتحديد "السماح بإعادة توجيه الوكيل" في خيارات PuTTY تحت قسم Auth ، وسيتم تحويل اتصال Pageant إلى النهاية البعيدة لإتاحة الوكيل الرئيسي الخاص بك. - Kevin Panko


من سؤال مشابه جدا على ServerFault، أوصي باستخدام سه-نسخة معرف، والتي تقوم بكل الخطوات المتعلقة بإعداد مفاتيح المصادقة لك:

ssh-copy-id هو برنامج نصي يستخدم ssh   لتسجيل الدخول إلى جهاز بعيد   (من المفترض استخدام كلمة مرور تسجيل الدخول ، لذلك   يجب أن تكون مصادقة كلمة المرور   ممكن ، ما لم تكن قد فعلت بعض   استخدام ذكي للهويات متعددة)

كما أنه يغير من أذونات   منزل المستخدم عن بعد ، ~ / .ssh ، و   ~ / .ssh / authorized_keys لإزالة المجموعة   كتابية (والتي لولاها   يمنعك من تسجيل الدخول ، إذا كان   sshd عن بعد ديه StrictModes في   ترتيب).

إذا تم إعطاء الخيار -i ثم   ملف الهوية (الافتراضي إلى   يتم استخدام ~ / .ssh / identity.pub) ،   بغض النظر عما إذا كان هناك أي   مفاتيح في ssh-agent الخاص بك.

كل ما عليك القيام به هو ببساطة:

ssh-copy-id user@host

اكتب كلمة المرور الخاصة بك مرة واحدة ، وكنت على ما يرام!


3





وبصرف النظر عن كل ما قيل بالفعل حول كيفية تعيين مفاتيح ssh ، فإنني أوصي سلسلة مفاتيح ك سه وكيل واجهة سطر الأوامر التي تسمح لك بالتعامل مع واحد فقط لكل عملية نظام بدلاً من كل تسجيل دخول.

أعلم أن هناك بالفعل أدوات GNOME و KDE التي تفعل الشيء نفسه ولكن إذا كنت وحدة التحكم اكتب هذا رائع (ويمكن استخدامه على معظم أنظمة يونكس).

لاستخدامها ، ببساطة إلحاق ما يلي الخاص بك ~/.bashrc (مماثلة للأصداف الأخرى):

if type keychain >/dev/null 2>/dev/null; then
  keychain --nogui -q <all your SSH/PGP keys>
  [ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
  [ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi

3





http://linuxproblem.org/art_9.html

هدفكم

تريد استخدام لينكس و OpenSSH لأتمتة المهام الخاصة بك. لذلك تحتاج إلى تسجيل دخول تلقائي من المضيف / المستخدم إلى المضيف ب / المستخدم ب. لا ترغب في إدخال أي كلمات مرور ، لأنك تريد الاتصال بـ ssh من داخل نص برنامج shell.


2



لم يكن هذا التراجع لي ، لكنني لا أمانع أن يحذف الأشخاص إجاباتهم إذا لاحظوا أن شخصًا آخر نشر ردًا مشابهًا تقريبًا قبل لحظات قليلة. - Arjan
أرجان: بالنسبة للجزء الأكبر ، أتفق معك ، ولكن عندما يتم فصل المشاركات فقط بعد عدة ثوان ، لا أعتقد بالضرورة أنه من العدل معاقبة الشخص في المرتبة الثانية. أنا لا أقول إن عليك مكافأتهم عن طريق التصويت ، لكن الإنحطاط يعطي انطباعًا بأن الإجابة خاطئة ، وليس في الوقت المناسب - TheTXI


كتبت هذا البرنامج التعليمي قصير جدا جدا بعد الحصول على حقا بالاحباط حقا مع دروس حقا طويلة حقا حقا انها بسيطة :)

test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"

scp ~/.ssh/id_rsa.pub destID@destMachine:/tmp/ #type password

ssh destID@destMachine #type password

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

rm /tmp/id_rsa.pub

2





معجن لديه -pw الخيار الذي يتيح لك إنشاء اختصار على سطح المكتب كما يلي:

"C:\Program Files\PuTTY\putty.exe" -ssh user@192.168.2.2 -pw your_password

2





  1. على المضيف المتصل ، قم بتشغيل ssh-keygen. (إذا أخبرك يجب عليك تحديد نوع ، فافعل ذلك ssh-keygen -t rsa.) عندما يطلب منك موقع ملف ، خذ الافتراضي. عندما يسألك عن عبارة المرور ، اضغط على "إدخال" لعدم وجود عبارة مرور.
  2. cat ~/.ssh/id_rsa.pub (أو أيا كان موقع الملف الافتراضي في ssh-keygen كان ، على الرغم من أنك يجب أن يكون لديك هل حقا قديم ssh تثبيت لتكون مختلفة) ؛ نسخ الإخراج إلى الحافظة الخاصة بك.
  3. سجل الدخول عادة إلى مضيف الوجهة كحساب تريد الاتصال به. تحرير الملف ~/.ssh/authorized_keys (إذا ~/.ssh غير موجود slogin الى مكان ما هذه هي طريقة بسيطة وسهلة للحصول عليها خلقت مع الأذونات الصحيحة). لصق الحافظة الخاصة بك (التي تحتوي على id_rsa.pub من المضيف الآخر) في هذا الملف.

1



-1 لاقتراح إضافة أي عبارة مرور. بدون عبارة مرور ، يمكن لأي شخص يقوم بقراءة الملف الظهور الآن كمستخدم شرعي. - bortzmeyer
أولاً ، طلب عدم كتابة كلمة المرور الخاصة به ؛ لم أكن أعتقد حقاً أن الحاجة إلى كتابة عبارة مرور بدلاً من كلمة المرور الخاصة به ستكون تحسناً. ثانيًا ، أنت على خطأ ؛ هذا هو السبب في وجود مفتاح عام ومفتاح خاص ، لذلك يمكن أن يكون المفتاح العام في العالم. - chaos
تتم كتابة كلمة المرور المعنية أثناء إنشاء المفتاح ، وليس في كل مرة تقوم فيها بالاتصال. صيح؟ - Richard Hoskins
تتطلب المفاتيح التي تم إنشاؤها باستخدام عبارة مرور إدخال عبارة المرور في كل مرة يتم فيها استخدام المفتاح. - chaos
خطأ. باستخدام ssh-agent (راجع الإجابة المقبولة) ، فأنت تكتب كلمة المرور مرة واحدة فقط لكل جلسة. - bortzmeyer