it-swarm.asia

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

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

147
Richard Hoskins

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

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

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

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

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

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

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

أو ، ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] في المحطة.

أو يدويًا خطوة بخطوة:

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

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

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

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

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

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

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

إذا تم كل شيء بشكل صحيح ، فإن استخدام ssh [email protected] لن يطالبك بكلمة مرور. إذا حدث خطأ ما مع الوكيل وليس المفتاح ، فسيُطلب منك كتابة عبارة المرور للمفتاح ، وليس كلمة المرور لحساب المستخدم.

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


ملاحظات:

  • تحتاج فقط إلى مفتاح 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/Author_keys '# أو هذا 
    
  • حفظ متغيرات العامل لإعادة الاستخدام (مثال تفصيلي)
     ssh-agent> ~/.ssh/cross-terminal-agent 
    . ~/.ssh/عبر محطة وكيل 
    
160
grawity

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

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

ssh-keygen

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

ssh-copy-id [email protected]

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

ثم هذا:

`ssh-agent`

أو ربما هذا:

exec ssh-agent sh

أو:

exec ssh-agent bash

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

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

و أخيرا:

ssh-add

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

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

22
freiheit

من الممكن القيام بذلك في المعجون على Windows أيضًا.

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

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

PuTTY username entry

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

PuTTY private key entry

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

11
スーパーファミコン

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

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

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

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

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

ssh-copy-id [email protected]

اكتب كلمة المرور الخاصة بك مرة واحدة ، وأنت على استعداد للذهاب!

3
Chris Bunch

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

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

لاستخدامها ، ما عليك سوى إلحاق ما يلي بـ ~/.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
scetoaux

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

"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
2
Genc Hosting

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

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

scp ~/.ssh/id_rsa.pub [email protected]:/tmp/ #type password

ssh [email protected] #type password

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

rm /tmp/id_rsa.pub
2
samthebest

http://linuxproblem.org/art_9.html

هدفك

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

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

إذا كنت تريد أن تفعل كل شيء في محطة لينكس:

على المضيف

cd ~/.ssh /

ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "بعض نص التعليق إذا كنت تريد" -f id_ArbitraryName

العناصر الموجودة في {} هي خيارات ، استخدم rsa أو dsa واختر حجم البت (أكبر هو أكثر أمانًا)

فأنت بحاجة إلى إضافة الأذونات إلى ملفات Author_keys وملفات author_keys2.

القط id_ArbitraryName.pub >> author_keys

القط id_AribtraryName.pub >> author_keys2

ثم قم بتنزيل ملف id_AribtraryName إلى المربع الذي تريد ssh منه. إذا كان مربع الاتصال يستند إلى نظام يونيكس ، فقد يكون ملف التكوين ضروريًا (في المعجون ، قام شخص ما بتغطية ذلك).

في مربع الاتصال

في ملف التكوين الخاص بك - vim ~/.ssh/config

مضيف مثال. Host.com # أو اسم الكمبيوتر الخاص بك

اسم المستخدم

IdentityFile ~/.ssh/id_ArbitraryName

يحتاج ملف التكوين إلى أذونات 600. يحتاج مجلد SSh إلى 700.

نأمل أن يساعد إذا واجهت مشكلة التكوين التي تم حذفها كثيرا.

0
nerdwaller