يوم جيد للجميع!
في الأسبوع القادم ، نطلق
مجموعة Linux Administrator التالية ، التي عقدنا معها عددًا من الأحداث. أحدهما درس مفتوح حول موضوع "SSH / NC / Socat: نصائح وحيل". على ذلك تذكرنا ما هو ssh ، تاريخها ورسالتها. درسنا خيارات مختلفة لاستخدامه: بعيد ، إعادة توجيه المنفذ المحلي ، نسخة آمنة ، وكيل الجوارب ، الوكيل العكسي. لقد جربنا بالفعل المرافق nc و socat في معمل افتراضي.
تم إجراء الندوة عبر الويب بواسطة مسؤول النظام ذي الخبرة
فلاديمير دروزديتسكي ، وهو مطور للبنية التحتية في letundra.com ، exposcan.ru ، crispmessenger.com.
نلفت انتباهكم إلى وصف مفصل للحدث الماضي.
أذكر ما هو SSHSSH (Secure Shell) عبارة عن "shell آمن" ، وهو بروتوكول شبكة على مستوى التطبيق. يسمح لك بالتحكم عن بعد في نظام التشغيل واتصالات TCP عبر النفق (على سبيل المثال ، لنقل الملفات). يشبه SSH في وظيفته بروتوكولي Telnet و rlogin ، إلا أنه يختلف عنهما لأنه يشفر كل حركة المرور ، بما في ذلك كلمات المرور المنقولة. مواصفات بروتوكول SSH-2 موجودة في RFC 4251.
لنلقِ نظرة على الاستخدامات المختلفة لـ SSH ، القياسية وغير القياسية. الموقف التالي سوف يساعدنا في هذا:

يقدم الحامل أربعة أجهزة افتراضية خلف جدار الحماية. سنقوم بتنفيذ جميع الإجراءات من الجهاز Node-1.
إنشاء مفتاح SSH
لاستخدام مفتاح SSH ، يجب عليك أولاً إنشاؤه. لهذا الغرض ، تعتبر الأداة المساعدة الخاصة مناسبة تمامًا في أي توزيع لنظام Linux:
ssh-keygen -t RSA -N otuslinux -f ~/.ssh/otus
- -t - التي خوارزمية التشفير للاستخدام ؛
- -N - مفتاح التشفير (وسيطة مريحة إذا كنت بحاجة إلى إنشاء مفتاح بدون تشفير وردود على مختلف طلبات ssh-keygen) ؛
- -f - في أي ملف لحفظ المفتاح.
إعدادات SSH خادم SSHلمزيد من العمل ، ستحتاج إلى تعديل الملف / etc / ssh / sshd_config وإعادة تشغيل خادم ssh. هنا يجب الانتباه إلى الخيارات التالية:
مصادقة RSA
RSAAuthentication yes
(ما إذا كانت مصادقة RSA مسموح بها) ؛
PubkeyAuthentication yes
(ما إذا كان المصادقة حسب المفتاح مسموحًا) ؛
AuthorizedKeysFile %h/.ssh/authorized_keys
(المسار إلى الجزء العمومي من المفتاح) ؛
PasswordAuthentication yes
(سواء كانت المصادقة مسموح بها).
لنسخ المفتاح إلى الخادم ، تابع ما يلي:
ssh-copy-id -i /path/to/pub/key user@server
(نسخ الجزء العام من المفتاح إلى الخادم البعيد ، سيتم نسخ المفتاح العمومي على طول المسار إلى الملف٪ h / .ssh / Author_keys)
من أجل عدم إدخال مفتاح التشفير مرة أخرى في كل مرة عند الاتصال بخادم بعيد ، يمكننا استخدام ssh-agent. للقيام بذلك:
eval $(ssh-agent -s)
(eval جزء من POSIX. يمكن أن تكون واجهته أيضًا عبارة عن صدفة. سيتم تخزين المفتاح في الوكيل في صورة غير مشفرة).
ssh-add ~/.ssh/our_private_key
(إضافة مفتاح خاص).
في هذه الحالة:
- -i - تحديد موقع المفتاح العمومي ؛
- اسم المستخدم - المستخدم على الخادم البعيد؛
- الخادم - الملكية الفكرية أو نظام أسماء النطاقات للخادم الهدف.
لسهولة الاتصال بخادم بعيد ، يمكننا وصف معلمات الاتصال في ملف التكوين ssh ، والذي يقع على المسار ~ / .ssh / config
وبالتالي ، نحصل على ملف التكوين SSH التالي:
Host myserver HostName ip/hostname Port 22/??? User username IdentityFile ~/.ssh/id_rsa
كل شيء بسيط هنا:
- المضيف - اسم اتصالنا.
- اسم المضيف - اسم الخادم ؛
- ميناء - ميناء سه
- اسم المستخدم
- IdentityFile - مفتاح ssh.
SSH SCPدعنا ننتقل. أسهل طريقة لاستخدام SSH هي نسخ الملف من جهاز واحد إلى جهاز التحكم عن بُعد. للقيام بذلك ، استخدم الأداة المساعدة SCP (بروتوكول النسخ الآمن). باستخدامه ، يمكنك نسخ دليل أو ملف من خادم محلي إلى خادم بعيد ، أو العكس:
scp test.txt username@server:/some/directory
(نسخ ملف من الخادم المحلي إلى الخادم البعيد).
scp username@server:test.txt /some/directory
(نسخ ملف من خادم بعيد إلى خادم محلي).
scp -r dir_name username@server:/some/directory
(نسخ مجلد من الخادم المحلي إلى جهاز التحكم عن بُعد).
هنا:
- اسم المستخدم - اسم المستخدم ؛
- الخادم - عنوان الخادم ؛
- / some / server - الدليل الذي نقوم بنسخه ؛
- dir_name - اسم المجلد ؛
- -r - استخدام متكرر.
SSH نفق ، وكيلالآن دعونا نلقي نظرة على خيار إعادة توجيه منفذ بجهاز تحكم عن بعد إلى الجهاز المحلي. خذ الحالة الكلاسيكية كمثال ، أي مجموعة عندما يكون لدينا "حارس أمن شرير" وخادم واحد مع تطبيق ويب ، ومنافذ ssh و https يبحثان في العالم ، ونريد حقًا الاتصال بخادم MySQL.
لذلك:
ssh -f -N -L 9906:127.0.0.1:3306 user@server
(فقط حالتنا مع MySQL)
نتيجة لذلك ، يمكننا الاتصال بالمنفذ المحلي 9906 مع عميل mysql والوصول إلى خادم "الأمان" الخاص بنا.
ssh -D 8080 -q -C -N -f servername
(بروكسيينج المرور عبر SOCKS عبر المنفذ 8080)
باستخدام هذا الأمر ، نقوم بإنشاء خادم وكيل socks5 باستخدام ssh. للتحقق من أدائها ، يمكننا استخدام الأمر التالي:
curl -x socks5h://server-with-proxy:8080 https://test.domain
مثال كلاسيكي لإعادة توجيه المنافذ باستخدام ssh هو عندما يكون الخادم الذي تريد الاتصال به خلف التطبيق. سيساعدنا الأمر التالي على الاتصال بمثل هذا الخادم:
ssh -f -N -R 2255:localhost:22 username@servername
المحلي
ssh -f -N -R 2255:localhost:22 username@servername
(إعادة التوجيه من خادم بعيد إلى خادم محلي).
على الخادم البعيد ، سيتم فتح المنفذ 2255 ، والذي سيتم إعادة توجيهه إلى المنفذ 22 من خادمنا للنات. للاتصال بمثل هذا الخادم ، يمكننا استخدام الأمر:
ssh -p 2255 username@localhost
يرجى ملاحظة أن:
- -f - إرسال ssh إلى الخلفية.
- -N - عدم تنفيذ الأمر على المضيف البعيد ؛
- -L - إعادة توجيه المنفذ المحلي (المنفذ المحلي: الجهاز المحلي: المنفذ البعيد) ؛
- -R - منفذ على الجهاز البعيد ؛
- -q - الوضع الصامت ؛
- -D - يحدد التوجيه الديناميكي المحلي لمنافذ مستوى التطبيق ؛
- -C - طلب ضغط البيانات.
Netcat (nc)محطتنا التالية هي Netcat ، وهي أداة مساعدة Unix تتيح لك إنشاء اتصالات TCP و UDP ، واستقبال البيانات من هناك ، ونقلها. على الرغم من فائدته وبساطته ، لا يتم تضمين هذه الأداة في أي معيار ولا يتم توفيرها مع أي مجموعة توزيع. وفقا لذلك ، يجب أن يتم تثبيتها باليد.
تتمثل إحدى ميزات Netcat (nc) المثيرة للاهتمام في إمكانية فحص المنافذ:
nc -vn ipaddress 22
(فحص منفذ واحد) ؛
nc -v ipaddress 10-55
(فحص نطاق المنفذ) ؛
nc -l 4444
(فتح والاستماع إلى منفذ 4444) ؛
nc servername 4444
(
nc servername 4444
بالخادم على المنفذ المطلوب).
بعد فتح المنفذ والاتصال به ، نحصل على غرفة محادثة شبكة صغيرة =).
بعد ذلك ، ندرس إمكانية نقل الملفات باستخدام الأداة المساعدة nc. للقيام بذلك ، سوف يساعدنا الأمر التالي:
cat test_file | pv -b | nc -l 4444
cat test_file | pv -b | nc -l 4444
(افتح المنفذ ونقل الملف إليه من خلال توجيه الإخراج ، يتم استخدام الأداة المساعدة pv مع مفتاح التبديل -b لعرض تقدم نقل الملفات بالبايت).
nc servername 4444 | pv -b > filename
nc servername 4444 | pv -b > filename
(
nc servername 4444 | pv -b > filename
بالخادم لاستلام الملف ، يتم استخدام pv -b بنفس الطريقة).
يمكننا تعقيد توجيه الإخراج من خلال إضافة أرشفة الملفات أثناء الطيران:
tar -czf - /path/to/ | pv -b | nc -l 4444
tar -czf - /path/to/ | pv -b | nc -l 4444
(أرشفة المجلدات أثناء التنقل والإرسال) ؛
n
c servername 4444 | pv -b > file.tar.gz
c servername 4444 | pv -b > file.tar.gz
(الحصول على الأرشيف المرسل).
ميزة غير واضحة للغاية في nc هي إنشاء خادم http فقط.
while true; do nc -lp 80 < index.html; done
يرجى ملاحظة أنه لاستخدام المنفذ 80 ، يجب أن يكون لديك امتيازات الجذر.
لاحظ أيضًا أن:
- -l - تشير إلى وضع التشغيل للاستماع ؛
- -n - لا تستخدم استعلامات DNS ؛
- -v - إخراج مطوّل.
سقراطإنها أيضًا أداة مفيدة تتيح لك إنشاء اتصالات TCP بين الأجهزة والمنافذ الأمامية ، وما إلى ذلك. تعمل وفقًا لمبدأ Netcat: فهي تفتح اتصالين ثنائي الاتجاه ، ويمكنها نقل البيانات ، والتدفقات ، وما إلى ذلك. على سبيل المثال ، باستخدام Socat ، يمكننا تعيين منافذ COM لمنافذ TCP ، إلخ.
أمثلة سوكات العمل:
socat -u FILE:file_name TCP-LISTEN:5778,reuseaddr
# # send file؛
socat -u TCP:192.168.1.48:5778 STDOUT | pv -r > file_name
socat -u TCP:192.168.1.48:5778 STDOUT | pv -r > file_name
# get file ؛
socat TCP-LISTEN:80,fork TCP:ubuntunode-4:80
# إعادة توجيه منفذ الخادم البعيد إلى المنفذ المحلي ؛
socat TCP-LISTEN:1234,reuseaddr EXEC:/bin/bash
# Open remote shell =)؛
socat - TCP:server_with_remote_shell:1234
# الاتصال
socat - TCP:server_with_remote_shell:1234
البعيدة للخادم البعيد.
فك التشفير الصغيرة:
- -u - استخدام الوضع أحادي الاتجاه ؛
- ملف - تشير إلى أننا نستخدم الملف ؛
- TCP-LISTEN - الاستماع إلى منفذ TCP.
- reuseaddr - يسمح لمآخذ التوصيل الأخرى بالتواصل مع نفس العنوان ، حتى لو تم استخدامه ؛
- شوكة - بعد إنشاء الاتصال ، تتم معالجة القناة في العملية الفرعية ؛
- TCP هو نوع الاتصال.
هل يجب أن أشاهد نسخة الفيديو الآن؟بالطبع ، نعم ، لأنه في الوصف يتم تقديم كل شيء بشكل تجريدي. بالإضافة إلى ذلك ، يتم وصف المواضيع في الندوة عبر الإنترنت بمزيد من التفصيل ، بالإضافة إلى أن بعضها يوفر أمثلة إضافية وخيارات التنفيذ. وبالتالي ، إذا كنت مهتمًا بهذا الموضوع ، فابحث في الدرس المفتوح بالكامل وكرر جميع الخطوات الخاصة بـ
Vladimir Drozdetsky للحصول على أقصى قدر من استيعاب المادة. ولا تنسى أن تترك تعليقاتك.
نحن ، بدورنا ، لا نقول وداعًا وندعوك إلى دورة
مسؤول Linux !