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


كيفية أتمتة تسجيل الدخول إلى SSH باستخدام كلمة المرور؟ أقوم بتكوين الاختبار الخاص بي VM ، لذلك لا يتم النظر في الأمان الثقيل. اختيار SSH للأمان مقبول مع الحد الأدنى من التكوين.

السابق)

echo password | ssh id@server

هذا لا يعمل.

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


335
2018-03-01 11:07


الأصل


لم يقبل FreeBSD مفاتيح بدون كلمة مرور. لا تغضب. لكن بعض خوادم لينوكس قبلته. أعتقد أن خادم Linux تم تكوينه بشكل خاطئ. - Eonil
هذا هو سؤال وجيه. على سبيل المثال ، أريد السماح للمستخدم بإدخال كلمة مرور ، ثم تسجيل الدخول إلى جهاز آخر باستخدامه. لا أستطيع أن أفترض أنه سيكون هناك مفاتيح ssh موزعة عبر جميع أجهزتنا. الإجابات أدناه حتى الآن لا تساعد هذه الحالة. - dfrankow
unix.stackexchange.com/questions/38737/... || unix.stackexchange.com/questions/38737/... || stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh - Ciro Santilli 新疆改造中心 六四事件 法轮功
سؤال مهم جدا. أحتاج إلى إجابة أيضًا ، فمزود الويب الخاص بي يحظر وضع ملفات المفاتيح على الخادم ، لذا يجب أن يمرر كلمة المرور بدون ملفات رئيسية. - Radon8472


الأجوبة:


لا تستخدم كلمة مرور. إنشاء مفتاح SSH passphraseless ودفعها إلى VM الخاص بك.

إذا كان لديك بالفعل مفتاح SSH ، يمكنك تخطي هذه الخطوة ... فقط اضغط أدخل للحصول على المفتاح وكل من passphrases:

$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.

انسخ المفاتيح إلى الخادم الهدف:

$ ssh-copy-id id@server
id@server's password: 

حاول الآن تسجيل الدخول إلى الجهاز ، مع ssh 'id@server'، وتحقق في:

.ssh/authorized_keys

للتأكد من أننا لم نضف مفاتيح إضافية لم تكن تتوقعها.

أخيرًا تحقق من تسجيل الدخول ...

$ ssh id@server

id@server:~$ 

قد ترغب أيضا في النظر في استخدام ssh-agent إذا كنت ترغب في محاولة الحفاظ على مفاتيحك محمية بعبارة مرور.


302
2018-03-01 11:17



قررت أخيرا استخدام الأزواج الرئيسية. لأنني أدركت أن هذه هي الطريقة الأكثر بساطة. - Eonil
Eonil: لا تميل إلى استخدام المفاتيح بدون عبارة مرور. تعلم كيفية استخدام ssh-agent أو pageant. - Iain
هذه إجابة جيدة ، لكن ليس الإجابة الصحيحة على السؤال. - John Hunt
هذه الأجوبة حقا ، تزعجني حقا. لم يكن هذا هو السؤال. لم يسأل أحد عن كيفية استخدام أزواج المفاتيح. - Matt Fletcher
هذا لا يجيب على السؤال. إنها إجابة جيدة لمسألة مختلفة تمامًا ، لكنها رهيبة بالنسبة إلى السؤال المطروح. - srchulo


$ sudo apt-get install sshpass
$ sshpass -p your_password ssh user@hostname

500
2018-05-31 09:08



في بعض الأحيان ، لا يمكنك استخدام المصادقة المستندة إلى المفتاح لأسباب متعددة .. على سبيل المثال ، في الوقت الحالي لا أستطيع استخدام keyauth على خادم plesk لأنه خارج المربع غير ممكّن وليس لدي الجذر. - John Hunt
+1! كملاحظة جانبية ، تحتاج إلى تشغيل عادي ssh مرة واحدة قبل استخدام sshpass، من أجل تأكيد بصمة RSA - user123444555621
-1 للحاجة إلى استخدام كلمة المرور في الأمر. هذا يسجل كلمة المرور في .bash_history في نص عادي على جهازك.
MisterDood يمكنك تشغيل history -r بعد الأمر لمحو التاريخ الخاص بك. نقطة جيدة رغم ذلك. - NuclearPeon
نصيحة للمحترفين: إذا كنت لا تريد عرض أمر محدد في .bash_history ، فقم بادئة الأمر بمسافة. انها تعمل فقط. ومع ذلك ، ينبغي أن يكون مستخدمو هذا الأمر أكثر اهتمامًا بأن يتمكن المستخدمون غير المميزين على النظام من رؤية سطر الأوامر الكامل مع ps ، والذي يتضمن بالطبع كلمة المرور. بما أن جلسات ssh تميل إلى أن تكون طويلة الأمد ، فهذه مشكلة أمنية. - CubicleSoft


إجابة سهلة في ثلاث خطوات سهلة

توليد rsa keypair:

# ssh-keygen

ثم نسخها على الخادم مع أمر واحد بسيط:

# ssh-copy-id userid@hostname

يمكنك الآن تسجيل الدخول بدون كلمة المرور:

# ssh userid@hostname

57
2017-11-14 12:57



يعمل بشكل جيد مع القيم الافتراضية. استخدام ~ / rsa4live.pub لم يعمل بالنسبة لي عند محاولة ssh-copy-id. - Cees Timmerman
إذا كنت تريد أن تعمل هذه الخطوات لمستخدم مختلف ، 1. ssh-keygen 2. ssh-copy-id nazir @ hostname 3. ssh nazir @ hostname - Venfah Nazir
بالنسبة لي كان ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host - Gabriel Fair
هذه ليست إجابة على السؤال. - Steve Bennett
و؟ الجواب أعلاه ، sshpass ... - lzap


استخدام نتوقع:

#!/usr/bin/expect -f
#  ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]

spawn ssh $name@$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact

مثال:

# ./1.ex password localhost ooshro
spawn ssh ooshro@localhost
ooshro@localhost's password: 
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/
Last login: Tue Mar  1 12:41:12 2011 from localhost

27
2018-03-01 11:08



انها تعمل ولكن لا يمكن طباعة stdout من الجهاز البعيد. - Eonil
أنه يعمل بشكل جيد لبعض الأجهزة لا يمكن وضع المفتاح مقدما منذ تغيير عنوان IP في كل مرة. - larrycai
سيكون من الجيد أن تضيف -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ل ssh الأمر كذلك لتجنب قبول الجهاز في known_hosts - larrycai
ب .. ب ولكن muh مفاتيح ssh ... - Damien Ó Ceallaigh
مثال أكثر تفصيلاً لهذا البرنامج النصي يمكنك العثور عليه في: linuxaria.com/howto/...  يجب أن تعمل هذه الأمثلة هنا مع الأوامر البعيدة أيضًا - Radon8472


قد لا يكون هذا أي استخدام لك ، ولكن يمكنك فعل ذلك باستخدام Perl:

\#!/usr/bin/perl  
use warnings;  
use strict;  

use Net::SSH::Perl;  
my $host = 'remote.serv.er';  
my $user = 'root';  
my $pass = 'hunter2';  
my $ssh = Net::SSH::Perl->new('$host');  
$ssh->login('$user', '$pass') or die "Oh noes! $!";

11
2018-03-01 11:52



وبالمثل ، يمكنك أن تفعل هذا مع روبي github.com/net-ssh/net-ssh - EnabrenTane


هل أنت متأكد أنك لا تريد استخدام مفاتيح SSH بدلاً من كلمات المرور؟ بهذه الطريقة انها آمنة وتلقائية.


9
2018-03-01 11:14



يعد استخدام مفاتيح SSH بدون كلمة مرور أكثر أمانًا من استخدام كلمات المرور في الملف. - yunzen
yunzen غير صحيح. تحميك المصادقة الرئيسية من هجمات mitm حتى إذا كنت لا تعرف مفتاح المضيف. يمكن للمهاجم انتحال صفة الخادم ، لكنه لا يتصل أبدا بالخادم الحقيقي. مع مصادقة كلمة المرور ، سيرى أي خادم تتصل به (سواء كان مشروطا أم لا) كلمة المرور. لهذه الأسباب يكون مفتاح ssh بدون كلمة المرور أكثر أمانًا من مجرد تخزين كلمة المرور في الملف. - kasperd
هذا ليس جوابا. - Steve Bennett
SteveBennett هو نفس الجواب المقبول وتم نشره قبل ذلك ، على الرغم من أنه يحتوي على تفاصيل أقل. - Michael Hampton♦
حسنا ، أود أن أقول إن الإجابة المقبولة هي إجابة لائقة على سؤال لم يتم طرحه. هذا ليس شيئًا - Steve Bennett


أنا مندهش لا أحد ذكر plink من putty-tools الحزمة في أوبونتو:

plink user@domain -pw mypass  [cmd]

كما أنها متوفرة على Windows والبنية تتوافق في الغالب مع عميل openssh.


5
2017-07-09 13:15



للنوافذ الخاصة بك إجابتك جيدة ، مستخدم لينكس / يونكس غير محظوظ عادة لا تملك طقطقة - Radon8472
هو في putty-tools صفقة - eadmaster