المقدمة
يصف هذا المستند كيفية تكوين Secure Shell (SSH) وتصحيح أخطائه على موجهات Cisco أو المُبدلات التي تقوم بتشغيل برنامج Cisco IOS®.
المتطلبات الأساسية
المتطلبات
يجب أن تكون صورة Cisco IOS المستخدمة صورة k9 (تشفير) لدعم SSH. على سبيل المثال، c3750e-universalk9-tar.122-35.SE5.tar هو صورة k9 (تشفير).
المكونات المستخدمة
تستند المعلومات الواردة في هذا المستند إلى برنامج Cisco IOS 3600 (C3640-IK9S-M)، الإصدار 12.2(2)T1.
تم تقديم SSH في الصور والأنظمة الأساسية التالية من Cisco IOS:
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
الرسم التخطيطي لشبكة SSH الإصدار 2
اختبار المصادقة
اختبار المصادقة دون SSH
اختبر المصادقة دون SSH أولاً للتأكد من عمل المصادقة مع Carter للموّجه قبل إضافة SSH. يمكن أن تكون المصادقة باسم مستخدم وكلمة مرور محليين أو بخادم المصادقة والتخويل والمحاسبة (AAA) الذي يشغّل TACACS+ أو RADIUS. (لا يمكن أن تتم المصادقة من خلال كلمة مرور السطر مع SSH.) يوضح هذا المثال المصادقة المحلية، والتي تتيح لك إستخدام Telnet في الموجه باسم المستخدم cisco وكلمة المرور cisco.
ملاحظة: خلال هذا المستند، يتم إستخدام vty للإشارة إلى نوع المحطة الطرفية الظاهرية.
!--- The aaa new-model command causes the local username and password on the router to be used in the absence of other AAA statements.
aaa new-model
username cisco password 0 cisco
line vty 0 4
transport input telnet
!--- Instead of aaa new-model, you can use the login local command.
اختبار المصادقة مع SSH
لاختبار المصادقة مع SSH، يجب عليك الإضافة إلى العبارات السابقة لتمكين SSH على Carter، واختبار SSH من محطات PC و UNIX.
ip domain-name rtp.cisco.com
!--- Generate an SSH key to be used with SSH.
crypto key generate rsa
ip ssh time-out 60
ip ssh authentication-retries 2
عند هذه النقطة، يجب أن يعرض الأمر show crypto key mypubkey rsa المفتاح الذي تم إنشاؤه. بعد إضافة تكوين SSH، اختبر قدرتك على الوصول إلى الموجّه من جهاز الكمبيوتر الشخصي ومحطة UNIX.
مجموعات التكوين الاختيارية
منع الاتصالات بخلاف SSH
إذا كنت ترغب في منع الاتصالات بخلاف SSH، فقم بإضافة الأمر transport input ssh أسفل الأسطر لتحديد الموجّه إلى اتصالات SSH فقط. يتم رفض برامج Telnet (بخلاف SSH) المباشرة.
line vty 0 4
!--- Prevent non-SSH Telnets.
transport input ssh
قم بإجراء إختبار للتأكد من أنه لا يمكن لمستخدمي البرامج بخلاف SSH إستخدام Telnet إلى Carter للموجه.
إعداد موجه Cisco IOS أو المحول كعميل SSH
هناك أربع خطوات مطلوبة لتمكين دعم SSH على موجّه Cisco IOS:
1. قم بتكوين الأمر hostname .
2. قم بتكوين مجال DNS.
3. أنشئ مفتاح SSH.
4. قم بتمكين دعم نقل SSH للوحدة الطرفية للنوع الافتراضي (vty).
إذا أردت أن يكون لديك جهاز واحد يعمل كعميل SSH إلى الآخر، فيمكنك إضافة SSH إلى جهاز ثانٍ يُسمي Reed. ويضع ذلك هذه الأجهزة في ترتيب العميل-الخادم، حيث يعمل Carter كخادم، ويعمل Reed كعميل. تكوين عميل Cisco IOS SSH على Reed هو نفسه المطلوب لتكوين خادم SSH على Carter.
!--- Step 1: Configure the hostname if you have not previously done so.
hostname carter
!--- The aaa new-model command causes the local username and password on the router to be used in the absence of other AAA statements.
aaa new-model
username cisco password 0 cisco
!--- Step 2: Configure the DNS domain of the router.
ip domain-name rtp.cisco.com
!--- Step 3: Generate an SSH key to be used with SSH.
crypto key generate rsa
ip ssh time-out 60
ip ssh authentication-retries 2
!--- Step 4: By default the vty transport is Telnet. In this case, Telnet is disabled and only SSH is supported.
line vty 0 4
transport input ssh
!--- Instead of aaa new-model, you can use the login local command.
قم بإصدار هذا الأمر إلى SSH من عميل Cisco IOS SSH (Reed) إلى خادم Cisco IOS SSH (Carter) لاختبار هذا:
ssh -v 2 -c aes256-cbc -m hmac-sha1-160 -l cisco 10.31.1.99
إعداد موجه Cisco IOS كخادم SSH الذي يقوم بتنفيذ مصادقة المستخدم المستندة إلى RSA
أكمِل هذه الخطوات لتكوين خادم SSH لتنفيذ المصادقة المستندة إلى RSA.
1. حدد اسم المضيف.
Router(config)#hostname
2. قم بتحديد اسم مجال افتراضي.
Router(config)#ip domain-name
3. قم بإنشاء أزواج مفاتيح RSA.
Router(config)#crypto key generate rsa
4. قم بتكوين مفاتيح SSH-RSA لمصادقة المستخدم والخادم.
Router(config)#ip ssh pubkey-chain
5. قم بتكوين اسم مستخدم SSH.
Router(conf-ssh-pubkey)#username
6. حدد مفتاح RSA العام للنظير البعيد.
Router(conf-ssh-pubkey-user)#key-string
7. حدد نوع مفتاح SSH وإصداره. (هذه الخطوة اختيارية.)
Router(conf-ssh-pubkey-data)#key-hash ssh-rsa
8. قم بالخروج من الوضع الحالي والرجوع إلى وضع EXEC ذي الامتيازات.
Router(conf-ssh-pubkey-data)#end
إضافة الوصول الآمن إلى خط SSH الطرفي
إذا احتجت إلى مصادقة سطر خط SSH الطرفي الصادر، فيمكنك تكوين SSH واختباره لبرامج Telnet العكسية الصادرة من خلال Carter، والذي يعمل كخادم اتصالات إلى فيلادلفيا.
ip ssh port 2001 rotary 1
line 1 16
no exec
rotary 1
transport input ssh
exec-timeout 0 0
modem InOut
stopbits 1
إذا كانت فيلادلفيا متصلة بالمنفذ 2 الخاص بـ Carter، فيمكنك تكوين SSH إلى فيلادلفيا من خلال Carter من Reed باستخدام هذا الأمر:
ssh -v 2 -c aes256-cbc -m hmac-shal-160 -p 2002 10.31.1.99
يمكنك استخدام هذا الأمر من Solaris:
ssh -c 3des -p 2002 -x -v 10.13.1.99
تقييد وصول SSH إلى شبكة فرعية
ستحتاج إلى تقييد اتصال SSH بشبكة فرعية معينة حيث يتم إسقاط جميع محاولات SSH الأخرى من بروتوكولات IP خارج الشبكة الفرعية.
يمكنك استخدام هذه الخطوات للقيام بالأمر نفسه:
- تحديد قائمة وصول تسمح بحركة المرور من هذه الشبكة الفرعية المعينة.
- تقييد الوصول إلى واجهة سطر VTY باستخدام فئة الوصول.
هذا مثال على التكوين. في هذا المثال، مسموح بوصول SSH فقط إلى الشبكة الفرعية 10.10.10.0 255.255.255.0، ويتم رفض أي وصول آخر.
Router(config)#access-list 23 permit 10.10.10.0 0.0.0.255
Router(config)#line vty 5 15
Router(config-line)#transport input ssh
Router(config-line)#access-class 23 in
Router(config-line)#exit
ملاحظة: ويتم استخدام الإجراء نفسه أيضًا لتأمين وصول SSH على الأنظمة الأساسية للمبدّل.
تكوين SSH، الإصدار 2
carter(config)#ip ssh version 2
الاختلافات على إخراج أمر الشعار
يختلف إخراج أمر banner بين Telnet والإصدارات المختلفة من اتصالات SSH. يوضح هذا الجدول مدى اختلاف عمل خيارات أمر banner مع أنواع مختلفة من الاتصالات.
خيار أمر الشعار |
Telnet |
SSH v2 |
سجل الشعار |
عرض قبل تسجيل الدخول إلى الجهاز. |
عرض قبل تسجيل الدخول إلى الجهاز. |
banner motd |
عرض قبل تسجيل الدخول إلى الجهاز. |
عرض بعد تسجيل الدخول إلى جهاز. |
banner exec |
عرض بعد تسجيل الدخول إلى جهاز. |
عرض بعد تسجيل الدخول إلى جهاز. |
ملاحظة: لم يعد الإصدار 1 من SSH مُوصى به.
يتعذر عرض شعار تسجيل الدخول
يدعم SSH الإصدار 2 شعار تسجيل الدخول. عندما يبدأ جلسة SSH مع موجه Cisco، يتم عرض شعار تسجيل الدخول إذا أرسل عميل SSH اسم المستخدم. على سبيل المثال، عند إستخدام عميل Secure Shell ssh، يتم عرض شعار تسجيل الدخول. عند إستخدام عميل PuTTY ssh، لا يتم عرض شعار تسجيل الدخول. وذلك لأن SSH يرسل اسم المستخدم بشكل افتراضي ولا يقوم PuTTY بإرسال اسم المستخدم بشكل افتراضي.
يحتاج عميل SSH اسم المستخدم لبدء الاتصال بالجهاز الذي يدعم SSH. لا يتم تمكين زر الاتصال إذا لم تقم بإدخال اسم المضيف واسم المستخدم. يوضح التقاط الشاشة هذا أنه يتم عرض شعار تسجيل الدخول عند اتصال SSH بالموجه. يُطالب الشعار بكلمة مرور.
يطالب الشعار بكلمة مرور
لا يتطلب عميل PuTTY اسم المستخدم لبدء اتصال SSH بالموجّه. توضح صورة الشاشة هذه أن عميل PuTTY يتصل بالموجه ويطلب اسم المستخدم وكلمة المرور. ولا يعرض شعار تسجيل الدخول.
اتصال SSH بالموجّه
يوضح التقاط الشاشة هذا أن شعار تسجيل الدخول يتم عرضه عند تكوين PuTTY لإرسال اسم المستخدم إلى الموجه.
إرسال اسم المستخدم إلى الموجّه
أوامر show وdebug
قبل إصدار أوامر debug الموضحة هنا، راجع المعلومات المهمة في أوامر تصحيح الأخطاء. يتم دعم بعض أوامر showبواسطة أداة مترجم الإخراج (المسجلة للعملاء فقط)، والتي تتيح لك عرض تحليل إخراج أمر show.
carter#show ssh
Connection Version Encryption State Username
0 2.0 DES Session started cisco
carter#show ip ssh
SSH Enabled - version 2.0
Authentication timeout: 120 secs; Authentication retries: 3
إخراج تصحيح الأخطاء للعينة
تصحيح أخطاء الموجّه
00:23:20: SSH0: starting SSH control process
00:23:20: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
00:23:20: SSH0: protocol version id is - SSH-2.0-1.2.26
00:23:20: SSH0: SSH_SMSG_PUBLIC_KEY msg
00:23:21: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
00:23:21: SSH: RSA decrypt started
00:23:21: SSH: RSA decrypt finished
00:23:21: SSH: RSA decrypt started
00:23:21: SSH: RSA decrypt finished
00:23:21: SSH0: sending encryption confirmation
00:23:21: SSH0: keys exchanged and encryption on
00:23:21: SSH0: SSH_CMSG_USER message received
00:23:21: SSH0: authentication request for userid cisco
00:23:21: SSH0: SSH_SMSG_FAILURE message sent
00:23:23: SSH0: SSH_CMSG_AUTH_PASSWORD message received
00:23:23: SSH0: authentication successful for cisco
00:23:23: SSH0: requesting TTY
00:23:23: SSH0: setting TTY - requested: length 24, width 80; set:
length 24, width 80
00:23:23: SSH0: invalid request - 0x22
00:23:23: SSH0: SSH_CMSG_EXEC_SHELL message received
00:23:23: SSH0: starting shell for vty
تصحيح أخطاء الخادم
ملاحظة: هذا هو إخراج جهاز Solaris.
rtp-evergreen.rtp.cisco.com#ssh -c 3des -l cisco -v 10.31.1.99
rtp-evergreen#/opt/CISssh/bin/ssh -c 3des -l cisco -v 10.13.1.99
SSH Version 1.2.26 [sparc-sun-solaris2.5.1], protocol version 1.5.
Compiled with RSAREF.
rtp-evergreen: Reading configuration data /opt/CISssh/etc/ssh_config
rtp-evergreen: ssh_connect: getuid 0 geteuid 0 anon 0
rtp-evergreen: Allocated local port 1023.
rtp-evergreen: Connecting to 10.13.1.99 port 22.
rtp-evergreen: Connection established.
rtp-evergreen: Remote protocol version 2.0,
remote software version Cisco-1.25
rtp-evergreen: Waiting for server public key.
rtp-evergreen: Received server public key (768 bits)
and host key (512 bits).
rtp-evergreen: Host '10.13.1.99' is known and matches the host key.
rtp-evergreen: Initializing random; seed file //.ssh/random_seed
rtp-evergreen: Encryption type: 3des
rtp-evergreen: Sent encrypted session key.
rtp-evergreen: Installing crc compensation attack detector.
rtp-evergreen: Received encrypted confirmation.
rtp-evergreen: Doing password authentication.
cisco@10.13.1.99's password:
rtp-evergreen: Requesting pty.
rtp-evergreen: Failed to get local xauth data.
rtp-evergreen: Requesting X11 forwarding with authentication spoofing.
Warning: Remote host denied X11 forwarding, perhaps xauth program
could not be run on the server side.
rtp-evergreen: Requesting shell.
rtp-evergreen: Entering interactive session.
التكوين غير الصحيح
تحتوي هذه الأقسام على إخراج تصحيح الأخطاء للعينة من العديد من التكوينات غير الصحيحة.
لم يتم تحويل SSH من عميل SSH باستخدام معيار تشفير البيانات (DES)
كلمة المرور غير صحيحة
تصحيح أخطاء الموجّه
00:26:51: SSH0: starting SSH control process
00:26:51: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
00:26:52: SSH0: protocol version id is - SSH-2.0-1.2.26
00:26:52: SSH0: SSH_SMSG_PUBLIC_KEY msg
00:26:52: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
00:26:52: SSH: RSA decrypt started
00:26:52: SSH: RSA decrypt finished
00:26:52: SSH: RSA decrypt started
00:26:52: SSH: RSA decrypt finished
00:26:52: SSH0: sending encryption confirmation
00:26:52: SSH0: keys exchanged and encryption on
00:26:52: SSH0: SSH_CMSG_USER message received
00:26:52: SSH0: authentication request for userid cisco
00:26:52: SSH0: SSH_SMSG_FAILURE message sent
00:26:54: SSH0: SSH_CMSG_AUTH_PASSWORD message received
00:26:54: SSH0: password authentication failed for cisco
00:26:54: SSH0: SSH_SMSG_FAILURE message sent
00:26:54: SSH0: authentication failed for cisco (code=7)
00:26:54: SSH0: Session disconnected - error 0x07
يرسل عميل SSH شفرة (Blowfish) غير مدعومة
تصحيح أخطاء الموجّه
00:39:26: SSH0: starting SSH control process
00:39:26: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
00:39:26: SSH0: protocol version id is - SSH-2.0-W1.0
00:39:26: SSH0: SSH_SMSG_PUBLIC_KEY msg
00:39:26: SSH0: SSH_CMSG_SESSION_KEY msg - length 112, type 0x03
00:39:26: SSH0: Session disconnected - error 0x20
الحصول على "%SSH-3-PRIVATEKEY: يتعذّر استرداد مفتاح RSA الخاص لـ" الخطأ
يمكن أن يؤدي التغيير في اسم المجال أو اسم المضيف إلى تشغيل رسالة الخطأ هذه. استخدم هذه الحلول البديلة:
crypto key zeroize rsa label key_name
crypto key generate rsa label key_name modulus key_size
النصائح
-
إذا تم رفض أوامر تكوين SSH الخاصة بك كأوامر غير قانونية، فأنت لم تقم بإنشاء زوج مفاتيح RSA بنجاح للموجّه الخاص بك. تأكد من تحديد اسم مضيف ومجال. ثم استخدم الأمر crypto key generate rsa لإنشاء أزواج من مفاتيح RSA وتمكين خادم SSH.
-
عند تكوين أزواج من مفاتيح RSA، يمكنك الحصول على رسائل الخطأ هذه:
-
"لم يتم تحديد اسم المضيف".
يجب أن تستخدم أمر التكوين العام hostname لتكوين اسم مضيف للموجّه.
-
"لم يتم تحديد مجال".
يجب أن تستخدم أمر التكوين العام ip domain-name لتكوين مجال مضيف للموجّه.
-
يقتصر عدد إتصالات SSH المسموح بها على الحد الأقصي لعدد الاتصالات التي vty
تم تكوينها للموجه. يستخدم كل اتصال SSH vty
موردا.
-
يستخدم SSH إما أمانًا محليًا أو بروتوكول الأمان الذي تم تكوينه من خلال AAA على الموجّه لمصادقه المستخدم. عند تكوين AAA، يجب التأكد من عدم تشغيل وحدة التحكم وفقًا لـ AAA. قم بتطبيق كلمة أساسية في وضع التكوين العام لتعطيل AAA على وحدة التحكم.
-
No SSH server connections running:
carter#show ssh
%No SSHv2 server connections running.
يقترح هذا الإخراج أن خادم SSH معطّل أو لم يتم تمكينه بشكل صحيح. إذا قمت بتكوين SSH بالفعل، فيُوصى بإعادة تكوين خادم SSH في الجهاز. أكمِل هذه الخطوات لإعادة تكوين خادم SSH على الجهاز.
- احذف أزواج مفاتيح RSA. بعد حذف أزواج مفاتيح RSA، يتم تعطيل خادم SSH تلقائيًا.
carter(config)#crypto key zeroize rsa
ملاحظة: من المهم إنشاء أزواج مفاتيح بـ 768 على الأقل كحجم وحدات البت عند تمكين SSH v2.
تحذير: لا يمكن التراجع عن هذا الأمر بعد حفظ التكوين الخاص بك. وأيضًا، بعد حذف مفاتيح RSA، لا يمكنك استخدام الشهادات أو CA أو المشاركة في عمليات تبادل الشهادات باستخدام نظائر أمان IP (IPSec) الأخرى إلا إذا قمت بإعادة إنشاء مفاتيح RSA لإعادة تكوين إمكانية التشغيل البيني لـ CA، والحصول على شهادة CA، وطلب شهادتك الخاصة مجددًا.
2. أعِد تكوين اسم المضيف واسم المجال للجهاز.
carter(config)#hostname hostname
carter(config)#ip domain-name domainname
3. قم بإنشاء أزواج مفاتيح RSA للموجه الخاص بك. يؤدي هذا إلى تمكين SSH تلقائيًا.
carter(config)#crypto key generate rsa
ملاحظة: راجع crypto key generate rsa - مرجع أمر أمان Cisco IOS، الإصدار 12.3 للحصول على مزيد من المعلومات حول استخدام هذا الأمر.
ملاحظة: يمكنك تلقي SSH2 0: رسالة الخطأ تم إستلام نوع رسالة غير متوقع" بسبب وجود حزمة مستلمة لا يمكن فهمها بواسطة الموجه. قم بزيادة طول المفتاح أثناء قيامك بإنشاء مفاتيح rsa لبروتوكول ssh لحل هذه المشكلة.
4. قم بتكوين خادم SSH.
5. لتمكين أحد مبدّلات/موجّهات Cisco وتكوينه لخادم SSH، يجب عليك تكوين معلمات SSH. إذا لم تقم بتكوين معلمات SSH، سيتم استخدام القيم الافتراضية.
ip ssh {[timeout seconds] | [authentication-retries integer]}
carter(config)# ip ssh
معلومات ذات صلة