كيف أقوم بإعداد SSH بحيث لا أضطر إلى كتابة كلمة المرور الخاصة بي عند الاتصال بمضيف؟
إذا كنت تستخدم جنوم ، فإن تطبيق seahorse ("كلمات المرور ومفاتيح التشفير") يمكنه القيام بذلك نيابة عنك: ملف -> جديد -> تأمين مفتاح Shell .
إذا كنت تفضل المحطة الطرفية ، فقم بتشغيل ssh-keygen -t <type>
لإنشاء زوج مفاتيح. أنواع زوج المفاتيح الصالحة هي:
سيطلب منك البرنامج عبارة مرور وموقع حيث يمكنك حفظ المفتاح الجديد. يوصى باستخدام المسار الافتراضي المقترح لأن جميع الأدوات الأخرى ستبحث عنه هناك.
مرة أخرى ، فرس البحر يمكن أن يفعل ذلك لك غالبًا - في مفاتيحي الشخصية ، انقر بزر الماوس الأيمن على مفتاح SSH واختر تكوين مفتاح آمن شل .
أو ، ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
في المحطة.
أو يدويًا خطوة بخطوة:
.ssh
في الدليل الرئيسي للمستخدم البعيد على المضيف البعيد.authorized_keys
(إذا لم يكن موجودًا بالفعل).umask
أكثر ليبرالية من المعتاد ، اجعل الملف غير قابل للكتابة على المجموعة: chmod go-w ~/.ssh ~/.ssh/authorized_keys
.~/.ssh/id_rsa.pub
) في ملف ~/.ssh/authorized_keys
البعيد.إذا قمت بتحميل المفتاح الخاص بك إلى وكيل ssh ، فسيحتفظ بالمفتاح الذي تم فك تشفيره في الذاكرة. نريد أن يتجنب هذا إعادة إدخال كلمة المرور عندما نصل إلى خادم.
أولاً ، يجب بدء تشغيل الوكيل أو تحميل مسار مأخذ توصيل الاتصالات الذي تم تشغيله في متغير. يؤدي تشغيل ssh-agent على محطة إلى إنشاء أوامر لتعيين متغيرات العامل وتعيينها. يمكن حفظ هذه الأوامر في ملف للاستخدام في محطة مختلفة. بدلاً من ذلك ، يمكن للمرء تشغيل هذه الأوامر ونسيان إعادة استخدام نفس العامل في محطة أخرى. على سبيل المثال: eval $(ssh-agent)
.
يعتبر تحميل المفتاح أمرًا بسيطًا في تنفيذ ssh-add
ومنحه عبارة المرور.
إذا كنت تستخدم GNOME ، عادةً ما يوفر gnome-keyring-daemon نفس وظيفة وكيل SSH مثل ssh-agent ، لذلك يجب ألا تحتاج إلى بدء أي شيء. سوف يقوم جنوم بتحميل وإلغاء قفل المفتاح عند تسجيل الدخول أيضًا.
إذا تم كل شيء بشكل صحيح ، فإن استخدام ssh [email protected]
لن يطالبك بكلمة مرور. إذا حدث خطأ ما مع الوكيل وليس المفتاح ، فسيُطلب منك كتابة عبارة المرور للمفتاح ، وليس كلمة المرور لحساب المستخدم.
أي شيء يستخدم ssh للتواصل سيعمل دون إدخال كلمة مرور حساب المستخدم عند تحميل المفتاح الصحيح في الوكيل. برامج مثل scp ، sftp و rsync تستفيد من هذا.
id_dsa
بدلاً من id_rsa
، وسيكون ECDSA id_ecdsa
.authorized_keys2
- لكن من غير المرجح أن تجد أي شيء أقدم من 5.0 قيد الاستخدام.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/عبر محطة وكيل
لم تحدد ما الذي تستخدمه 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 ، ويطلب من الوكيل القيام بخدع التوقيع السحرية من أجله.
من الممكن القيام بذلك في المعجون على Windows أيضًا.
بمجرد الانتهاء من إعداد زوج المفاتيح العامة/الخاصة (كما تظهر الإجابات الأخرى هنا) ، قم بتشغيل PuttyGen. هناك ، قم بتحميل المفتاح الخاص الحالي الذي قمت بإعداده بالفعل ، ثم احفظه كمفتاح خاص PuTTY (ppk).
ثم في PuTTY ، فقط اضغط على الجلسة المحفوظة التي تريد تسجيل الدخول التلقائي إليها وانقر فوق تحميل. من هنا ، انتقل إلى اتصال -> البيانات في الجزء الأيمن ، وفي نوع "اسم مستخدم تسجيل الدخول التلقائي" في اسم المستخدم لهذا الخادم البعيد:
بعد ذلك انتقل إلى Connection -> SSH -> Auth ، وتصفح عن ppk الذي قمت بإنشائه في PuttyGen:
ثم العودة إلى صفحة الجلسة وحفظ الجلسة التي قمت بتحميلها في وقت سابق.
من سؤال مشابه جدًا على ServerFault ، أوصي باستخدام ssh-copy-id ، الذي يقوم بجميع الخطوات المتضمنة في إعداد مفاتيح المصادقة لك:
ssh-copy-id هو برنامج نصي يستخدم ssh لتسجيل الدخول إلى جهاز بعيد (من المفترض أن يستخدم كلمة مرور تسجيل الدخول ، لذلك يجب تمكين مصادقة كلمة المرور ، ما لم تكن قد قمت ببعض الاستخدام الذكي لهويات متعددة)
كما أنه يغير أذونات منزل المستخدم البعيد ، و// .ssh ، و ~/.ssh/Author_keys لإزالة إمكانية كتابة المجموعة (والتي من شأنها أن تمنعك من تسجيل الدخول ، إذا كان sshd البعيد يحتوي على تعيين StrictModes في تكوينه).
إذا تم إعطاء الخيار -i ، فسيتم استخدام ملف الهوية (الإعدادات الافتراضية إلى ~/.ssh/identity.pub) ، بغض النظر عما إذا كانت هناك مفاتيح في وكيل ssh الخاص بك.
كل ما عليك القيام به هو ببساطة هذا:
ssh-copy-id [email protected]
اكتب كلمة المرور الخاصة بك مرة واحدة ، وأنت على استعداد للذهاب!
بصرف النظر عن كل ما تم إخباره بالفعل حول كيفية تعيين مفاتيح 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
لدى PuTTY خيار -pw
يتيح لك إنشاء اختصار على سطح المكتب مثل هذا:
"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
لقد كتبت هذا البرنامج التعليمي القصير جدًا بعد الحصول على الإحباط حقًا من خلال الدروس الطويلة حقًا ، إنها حقًا بسيطة جدًا :)
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
http://linuxproblem.org/art_9.html
هدفك
تريد استخدام Linux و OpenSSH لأتمتة مهامك. لذلك تحتاج إلى تسجيل دخول تلقائي من المضيف أ/المستخدم إلى المضيف ب/المستخدم ب. لا ترغب في إدخال أي كلمات مرور ، لأنك تريد الاتصال بـ ssh من برنامج نصي داخل Shell.
ssh-keygen
. (إذا أخبرك أنه يجب عليك تحديد نوع ، فقم ssh-keygen -t rsa
.) عندما يطلب منك تحديد موقع ملف ، خذ الوضع الافتراضي. عندما يسألك عن عبارة مرور ، اضغط على enter لعدم وجود عبارة مرور.cat ~/.ssh/id_rsa.pub
(أو أيًا كان موقع الملف الافتراضي في ssh-keygen
، على الرغم من أنك يجب أن يكون لديك حقًا تثبيت ssh
ليصبح مختلفًا) ؛ نسخ الإخراج إلى الحافظة الخاصة بك.~/.ssh/authorized_keys
(إذا لم يكن ~/.ssh
موجودًا ، slogin
إلى مكان ما ؛ فهذه هي الطريقة البسيطة والسهلة للحصول عليه بإنشائه باستخدام الأذونات الصحيحة). الصق الحافظة الخاصة بك (التي تحتوي على id_rsa.pub
من المضيف الآخر) في هذا الملف.إذا كنت تريد أن تفعل كل شيء في محطة لينكس:
على المضيف
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.
نأمل أن يساعد إذا واجهت مشكلة التكوين التي تم حذفها كثيرا.