نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی

SSH - دسترسی، تنظیمات برنامه. گزینه های پیش فرض

ما یک دوره جدید از تیم را مورد توجه شما قرار می دهیم کد بای- "تست نفوذ برنامه های کاربردی وب از ابتدا". تئوری عمومی، آماده سازی محیط کار، فازی غیرفعال و انگشت نگاری، فازی فعال، آسیب پذیری ها، پس از بهره برداری، ابزارها، مهندسی اجتماعی و موارد دیگر.


SSH چیست و برای چیست؟

Secure Shell (SSH) یک پروتکل شبکه است که عملکرد پوسته را برای یک ماشین راه دور از طریق یک کانال امن فراهم می کند. SSH پیشرفت‌های امنیتی مختلفی از جمله احراز هویت کاربر/میزبان، رمزگذاری داده‌ها و یکپارچگی داده‌ها را به ارمغان می‌آورد، که حملات محبوبی مانند استراق سمع، جعل DNS/IP، جعل داده‌ها، و ربودن اتصال و غیره را غیرممکن می‌کند. برای کاربران ftp، telnet یا rlogin که از آنها استفاده می‌کنند. پروتکلی که داده ها را به صورت متنی واضح منتقل می کند، بسیار توصیه می شود که به SSH تغییر وضعیت دهند.

OpenSSH یک پیاده سازی متن باز از پروتکل SSH است که یک اتصال شبکه را با استفاده از مجموعه ای از برنامه ها رمزگذاری می کند. اگر می‌خواهید SSH روی لینوکس داشته باشید، می‌توانید OpenSSH را نصب کنید که از یک سرور OpenSSH و بسته‌های کلاینت تشکیل شده است.

بسته های OpenSSH سرور / مشتری با ابزارهای زیر ارائه می شوند:

  • سرور OpenSSH: sshd (شیب SSH)
  • کلاینت OpenSSH: scp (کپی از راه دور ایمن)، sftp (انتقال فایل امن)، ورود به سیستم / ssh (ورود از راه دور امن)، ssh-add (اضافه کردن کلید خصوصی)، ssh-agent (عامل احراز هویت)، ssh-keygen (مدیریت کلید احراز هویت ).

نصب OpenSSH Server و Client در لینوکس

اگر می‌خواهید سرور / سرویس گیرنده OpenSSH را نصب کنید و سرور OpenSSH را برای شروع خودکار تنظیم کنید، دستورالعمل‌های زیر را دنبال کنید که بسته به توزیع متفاوت است.

دبیان، اوبونتو یا لینوکس مینت

$ sudo apt-get نصب openssh-server openssh-client

در سیستم های مبتنی بر دبیان، بلافاصله پس از نصب، OpenSSH به طور خودکار در هنگام بوت شروع می شود. اگر به دلایلی سرور OpenSSH به طور خودکار هنگام راه‌اندازی سیستم راه‌اندازی نمی‌شود، می‌توانید دستور زیر را اجرا کنید تا بدون ابهام ssh را در هنگام راه‌اندازی سیستم به بوت اضافه کنید.

$ sudo update-rc.d پیش فرض های ssh

فدورا یا CentOS / RHEL 7

$ sudo yum -y نصب openssh-server openssh-clients $ sudo systemctl شروع سرویس sshd $ sudo systemctl فعال کردن sshd.service

CentOS / RHEL 6

$ sudo yum -y نصب openssh-server openssh-clients $ sudo service sshd شروع $ sudo chkconfig sshd در

آرچ لینوکس

$ sudo pacman -Sy openssh $ sudo systemctl شروع سرویس sshd $ sudo systemctl فعال کردن sshd.service

راه اندازی سرور OpenSSH

اگر می‌خواهید سرور OpenSSH را پیکربندی کنید، می‌توانید فایل پیکربندی کل سیستم واقع در / etc / ssh / sshd_config را ویرایش کنید.

چند گزینه OpenSSH وجود دارد که ممکن است به آنها علاقه مند باشید:

به طور پیش فرض، sshd در پورت 22 گوش می دهد و برای اتصالات ssh ورودی گوش می دهد. با تغییر پورت پیش فرض ssh می توانید از حملات هکرهای خودکار مختلف جلوگیری کنید.

ListenAddress 192.168.1.1

اگر دستگاه شما بیش از یک رابط شبکه فیزیکی دارد، ممکن است بخواهید بررسی کنید که کدام یک مربوط به sshd است، می توانید از گزینه ListenAddress برای این کار استفاده کنید. این گزینه با محدود کردن SSH ورودی فقط از طریق یک رابط خاص به بهبود امنیت کمک می کند.

HostKey / etc / ssh / ssh_host_key

گزینه HostKey تعیین می کند که کلید میزبان شخصی در کجا قرار دارد.

PermitRootLogin شماره

گزینه PermitRootLogin - آیا root می تواند از طریق ssh وارد شود یا خیر.

AllowUsers آلیس باب

با استفاده از گزینه AllowUsers می توانید به طور انتخابی سرویس ssh را برای کاربران خاص لینوکس غیرفعال کنید. چندین کاربر را می توان مشخص کرد که با فاصله از هم جدا می شوند.

پس از اصلاح / etc / ssh / sshd_config، مطمئن شوید که سرویس ssh را مجددا راه اندازی کنید.

برای راه اندازی مجدد OpenSSH در دبیان، اوبونتو یا لینوکس مینت:

$ sudo /etc/init.d/ssh راه اندازی مجدد

برای راه اندازی مجدد OpenSSH در فدورا، CentOS / RHEL 7 یا Arch Linux:

$ sudo systemctl sshd.service را راه اندازی مجدد کنید

برای راه اندازی مجدد OpenSSH در CentOS / RHEL 6:

سرویس sudo $ sshd راه اندازی مجدد

نحوه اتصال به SSH

اتصال به SSH از لینوکس

کاربران لینوکس نیازی به نصب نرم افزار اضافی ندارند.

از ویندوز به SSH متصل شوید

برای ویندوز، بسیاری از مردم PuTTY را با موفقیت توصیه و استفاده می کنند. من مخالفتی با این برنامه ندارم، اما خودم Cygwin را ترجیح می دهم و توصیه می کنم.

Cygwin فقط یک کلاینت SSH نیست. این یک ترکیب قدرتمند است که از بسیاری از دستورات لینوکس پشتیبانی می کند. به عنوان مثال، ایجاد گواهینامه SSL در Cygwin بسیار آسان است (درست مانند لینوکس). در ویندوز، برای ایجاد گواهینامه های خودامضا، باید با یک تنبور برقصید. Cygwin برای استفاده از cURL بسیار راحت است (نیازی به نصب هیچ چیز جداگانه ندارید) و غیره. کسانی که فاقد خط فرمان و برنامه های لینوکس در ویندوز هستند، یک خروجی برای خود در Cygwin پیدا می کنند.

نصب Cygwin ساده است. به وب سایت رسمی بروید و نسخه 32 بیتی یا 64 بیتی را دانلود کنید.

یک فایل کوچک دانلود می شود - این برنامه نصب است. نصب کننده گرافیکی است. اگرچه شامل تعداد زیادی گزینه است، اما همه آنها نسبتاً ساده هستند و بسیاری از آنها از سایر نصب کننده های گرافیکی آشنا هستند. اگر چیزی واضح نیست، فقط روی "بعدی" کلیک کنید. شاید تنها پنجره زیر بتواند گیج کننده باشد:

در اینجا تمام موارد موجود برای نصب وجود دارد. فعلا نیازی به درک آنها نداریم. از آنجایی که بیشترین درخواست ها قبلاً برای نصب علامت گذاری شده اند. و اگر چیزی در آینده گم شد، می توانید به راحتی مورد ضروری را نصب کنید.

اتصال SSH (معمول برای لینوکس و ویندوز)

کاربران لینوکس یک کنسول باز می کنند، کاربران ویندوز Cygwin را تایپ می کنند.

SSH برای اتصال به اطلاعات زیر نیاز دارد:

  • IP یا نام میزبان
  • شماره پورت
  • نام کاربری
  • رمز عبور کاربر

دو مورد از این پارامترها SSH می تواند فرض کند: نام کاربری و شماره پورت. اگر پورتی مشخص نشده باشد، پورت پیش فرض در نظر گرفته می شود. اگر کاربری مشخص نشده باشد، از همان نامی استفاده می شود که در سیستمی که اتصال از آن برقرار شده است. به عنوان مثال، آدرس میزبان برای اتصال 192.168.1.36 است. اگر تایپ کنم

Ssh 192.168.1.36

من موارد زیر را می بینم

[ایمیل محافظت شده]~ $ ssh 192.168.1.36 صحت میزبان "192.168.1.36 (192.168.1.36)" را نمی توان "تأیید کرد. اثر انگشت کلید ECDSA SHA256 است: sIxZeSuiivoEQ00RXEAP8SQHSHwxyl آیا مطمئن هستید که می خواهید به //p.

از آنجایی که من برای اولین بار به هاست متصل می شوم، میزبان ناشناخته است. آنها از من می پرسند که آیا می خواهم ادامه دهم؟ دارم تایپ میکنم آره:

هشدار: "192.168.1.36" (ECDSA) برای همیشه به لیست میزبان های شناخته شده اضافه شد. [ایمیل محافظت شده]رمز عبور "s:

بسیار خوب، هاست 192.168.1.36 به لیست هاست های آشنا اضافه شده است. از من یک رمز عبور برای کاربر Alex خواسته شده است. از آنجایی که چنین کاربری روی سرور با SSH وجود ندارد، اما کلیک می کنم Ctrl + C(to break) و دستور را به همراه نام کاربری سیستم از راه دور وارد کنید. کاربر قبل از آدرس دستگاه راه دور وارد می شود و با علامت @ از آدرس جدا می شود. نماد @ در انگلیسی به صورت at خوانده می شود و می توان آن را به صورت "in" ترجمه کرد. آن ها ضبط کردن [ایمیل محافظت شده]را می توان به عنوان "user mial on machine 192.168.1.36" تفسیر کرد.

Ssh [ایمیل محافظت شده]

دعوت [ایمیل محافظت شده]جای خود را به یک دعوت داد [ایمیل محافظت شده]این بدان معناست که ما قبلاً روی یک دستگاه راه دور هستیم، یعنی قبلاً یک اتصال داریم. اگر شما نیاز به تعیین یک پورت دارید (اگر با پورت استاندارد متفاوت است)، پورت باید بعد از سوئیچ -p مشخص شود. به عنوان مثال مانند این:

Ssh [ایمیل محافظت شده]-p 10456

پس از اتصال، با چیزی شبیه به سلام زیر مواجه می شویم:

Linux mint 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 برنامه های موجود در سیستم دبیان گنو / لینوکس نرم افزار رایگان هستند. شرایط توزیع دقیق برای هر برنامه در فایل های جداگانه در / usr / share / doc / * / کپی رایت توضیح داده شده است. دبیان گنو / لینوکس مطلقاً بدون ضمانت است، تا جایی که قانون قابل اجرا مجاز است. آخرین ورود: سه شنبه 16 ژوئن 15:32:25 2015 از 192.168.1.35

به این معنی است که دستگاه راه دور Linux Mint با هسته 3.16، نسخه 64 بیتی است. همچنین اطلاعات مهمی در مورد زمان آخرین ورود و آدرس IP که اتصال از آن آغاز شده است. اگر زمان و IP برای شما ناآشنا است و شما تنها کاربر هستید، سیستم شما به خطر افتاده است و باید اقدامات لازم را انجام دهید.

بیایید چند دستور را تایپ کنیم تا مطمئن شویم کجا هستیم و کی هستیم: pwd, unname -aو غیره.:

برای پایان دادن به جلسه (قطع اتصال)، تایپ کنید

یا فشار دهید Ctrl + D.

بدون وارد کردن رمز عبور وارد SSH شوید

اول، این فقط راحت تر است. دوم اینکه ایمن تر است.

ابتدا باید کلیدهای rsa را ایجاد کنیم. اگر کاربر لینوکس هستید، خوب هستید. اگر کاربر ویندوز هستید، اما به توصیه من گوش نکردید و PuTTY را انتخاب کردید، پس مشکل دارید و خودتان فکر کنید که چگونه آن را حل کنید. اگر Cygwin دارید، پس همه چیز نیز خوب است.

اگر موفق شدید به سیستم راه دور وارد شوید، از سیستم خارج شوید. سپس تایپ کنید

Ssh-keygen -t rsa

از ما نام فایل خواسته می شود، نیازی به وارد کردن چیزی نیست، از نام پیش فرض استفاده می شود. رمز عبور نیز خواسته می شود. رمز عبور وارد نمی کنم.

اکنون در دستگاه راه دور، باید دایرکتوری .ssh را ایجاد کنیم. اجرای دستور بر روی یک ماشین راه دور در زیر توضیح داده خواهد شد. در حال حاضر، فقط دستور را کپی کنید، به یاد داشته باشید که آدرس IP و نام کاربری را به خود تغییر دهید:

Ssh [ایمیل محافظت شده] mkdir .ssh

حال باید محتویات فایل id_rsa.pub را در دستگاه راه دور کپی کنیم. انجام این کار بسیار آسان است (فراموش نکنید که داده ها را به خودتان تغییر دهید):

Cat .ssh / id_rsa.pub | ssh [ایمیل محافظت شده]"cat >> .ssh / authorized_keys"

اکنون ما فقط وارد سیستم می شویم و دیگر از ما رمز عبور نمی خواهیم. و حالا همیشه همینطور خواهد بود.

اجرای دستورات روی سرور راه دور بدون ایجاد جلسه پوسته

علاوه بر باز کردن یک جلسه پوسته در یک سیستم راه دور، ssh همچنین اجازه می دهد تا دستورات فردی روی سیستم راه دور اجرا شوند. به عنوان مثال، برای اجرای فرمان درختی روی یک میزبان راه دور به نام remote-sys و نمایش نتایج در سیستم محلی، این کار را انجام دهید:

درخت ssh remote-sys

مثال واقعی من:

Ssh [ایمیل محافظت شده]درخت

با استفاده از این تکنیک می توانید کارهای جالبی انجام دهید، مانند اجرای دستور ls در سیستم راه دور و تغییر مسیر خروجی به فایلی در سیستم محلی:

ssh remote-sys "ls *"> dirlist.txt

یک مثال واقعی:

Ssh [ایمیل محافظت شده]"ls *"> dirlist.txt cat dirlist.txt

به تک نقل قول ها در دستور بالا توجه کنید. این به این دلیل است که ما نمی خواهیم گسترش مسیر روی ماشین محلی انجام شود. از آنجایی که ما به این اجرا در یک سیستم راه دور نیاز داریم. همچنین، اگر بخواهیم خروجی استاندارد را به فایلی در دستگاه راه دور هدایت کنیم، می‌توانیم دستور تغییر مسیر و نام فایل را در داخل نقل قول‌های تکی قرار دهیم:

ssh remote-sys "ls *> dirlist.txt"

ارسال stdout از ماشین محلی به ssh راه دور

یک نسخه به همان اندازه جالب از اجرای دستور کمی در بالا نشان داده شده است:

Cat .ssh / id_rsa.pub | ssh [ایمیل محافظت شده]"cat >> .ssh / authorized_keys"

  • دستور cat محتویات فایل .ssh / id_rsa.pub را خط به خط در ماشین محلی می خواند و نمایش می دهد.
  • | (pipe) آنچه را که باید در stdout ظاهر شود به دستور دیگری منتقل می کند.
  • به جای دستوری که باید خطوط ارسال شده به آن را پردازش می کرد، یک اتصال به سیستم راه دور (ssh [ایمیل محافظت شده]).
  • سیستم راه دور خطوطی را دریافت می کند که دستور cat >> .ssh / authorized_keys برای آنها ارائه شده است. آن ها محتویات خروجی استاندارد خط به خط در فایل .ssh / authorized_keys در دستگاه راه دور نوشته می شود.

باز کردن یک برنامه گرافیکی واقع در یک کامپیوتر راه دور

ترفند بعدی به دو کامپیوتر لینوکس نیاز دارد. متأسفانه، حتی Cygwin نمی تواند از عهده این ترفند برآید. علاوه بر این، هر دو لینوکس باید دارای یک رابط کاربری گرافیکی باشند.

تونل زنی با SSH

در میان چیزهای دیگر، زمانی که اتصال به یک میزبان راه دور از طریق SSH اتفاق می افتد، ایجاد یک تونل رمزگذاری شده است که بین سیستم های محلی و راه دور شکل می گیرد. به طور معمول، این تونل برای اطمینان از اینکه دستورات تایپ شده در ماشین محلی به طور ایمن به ماشین راه دور منتقل می شود، استفاده می شود و نتیجه نیز به طور ایمن ارسال می شود.

علاوه بر این عملکرد اساسی، SSH به اکثر انواع ترافیک اجازه می دهد تا از طریق یک تونل رمزگذاری شده هدایت شوند و نوعی VPN (شبکه خصوصی مجازی) بین سیستم های محلی و راه دور ایجاد شود.

شاید رایج ترین مورد استفاده از این ویژگی ها، قابلیت پخش ترافیک سیستم X Window باشد. در سیستمی که یک سرور X را اجرا می کند (اینها ماشین هایی هستند که رابط کاربری گرافیکی دارند)، می توان یک برنامه مشتری X (برنامه گرافیکی) را روی یک سیستم راه دور اجرا کرد و نتایج کار آن را در سیستم محلی مشاهده کرد. انجام این کار آسان است. به عنوان مثال، من می خواهم به ریموت هاست remote-sys متصل شوم و روی آن برنامه xload را اجرا کنم. در عین حال می توانم خروجی گرافیکی این برنامه را روی کامپیوتر محلی ببینم. این کار به این صورت انجام می شود:

ssh -X remote-sys

یک مثال واقعی:

Ssh -X [ایمیل محافظت شده] gedit

آن ها SSH با سوئیچ -X شروع می شود. و سپس برنامه تازه شروع می شود. به اسکرین شات نگاهی بیندازید.

من در کالی لینوکس هستم. من با موفقیت از طریق SSH وارد رایانه راه دور شدم. بعد از آن برنامه gedit را اجرا کردم. این برنامه ممکن است حتی در کالی لینوکس موجود نباشد، اما مطمئناً در لینوکس مینت است که من به آن وصل شدم. من می توانم نتیجه این برنامه را روی صفحه نمایش ببینم که گویی برنامه به صورت محلی اجرا می شود. اما، دوباره، من می خواهم که شما این را درک کنید، هیچ برنامه gedit در حال اجرا در رایانه محلی وجود ندارد. اگر بخواهم نتیجه کار gedit (یا هر برنامه دیگری که به این روش باز شده است) را ذخیره کنم، معلوم می شود که در محیط کامپیوتر راه دور کار می کند، سیستم فایل آن را می بیند و غیره. می خواهید کامپیوتر راه دور را با استفاده از یک رابط گرافیکی پیکربندی کنید ...

نحوه انتقال تصویر از کل دسکتاپ را بعداً در همان مقاله، در بخش «نحوه پیکربندی VNC از طریق SSH» یاد خواهید گرفت.

در برخی از سیستم ها، این "تمرکز" نیاز به استفاده از گزینه -Y به جای گزینه -X دارد.

کپی از / به کامپیوتر راه دور (scp و sftp)

scp

بسته OpenSSH همچنین شامل دو برنامه است که از یک تونل رمزگذاری شده SSH برای کپی فایل ها در شبکه استفاده می کنند. برنامه اول است scp("کپی ایمن") - بیشتر استفاده می شود، و همچنین یک برنامه مشابه cp برای کپی کردن فایل ها. قابل توجه ترین تفاوت این است که منبع فایل می تواند یک میزبان راه دور و به دنبال آن یک کولون و محل فایل باشد. به عنوان مثال، اگر بخواهیم سندی به نام document.txt را از فهرست اصلی خود به سیستم remote-sys در فهرست کاری فعلی در سیستم محلی خود کپی کنیم، می توانیم این کار را انجام دهیم:

Scp remote-sys: document.txt. document.txt 100% 177 0.2KB / s 00:00

یک مثال واقعی:

# فایل را در دستگاه محلی حذف کنید، در صورت وجود rm dirlist.txt # فایل را در دستگاه ssh راه دور ایجاد کنید [ایمیل محافظت شده]"ls *> dirlist.txt" # وجود آن ssh را بررسی کنید [ایمیل محافظت شده]"ls -l" # آن را در scp ماشین محلی کپی کنید [ایمیل محافظت شده]: dirlist.txt. # محتوای آن را بررسی کنید cat dirlist.txt

برای کپی کردن یک فایل از یک ماشین محلی به یک از راه دور:

فایل scp-local remote-sys :.

مثال واقعی

# ایجاد یک فایل لمسی جدید nfile.txt # ارسال فایل scp nfile.txt [ایمیل محافظت شده]: nfile.txt 100% 0 0.0KB / s 00:00 # بررسی کنید که آیا فایل در دستگاه ssh راه دور وجود دارد یا خیر [ایمیل محافظت شده]"ls -l"

در دستور ارسال:

  • nfile.txt - نام فایل،
  • [ایمیل محافظت شده]- نام کاربری و میزبان راه دور،
  • ... (نقطه) به این معنی است که فایل باید در دایرکتوری کاری فعلی در سرور راه دور کپی شود، در حالی که نام فایل یکسان باقی می ماند، یعنی nfile.txt

یادداشت:

برای کپی کردن یک فایل از B به A هنگام ورود به B:

scp / مسیر / به / فایل [ایمیل محافظت شده]: / مسیر / به / مقصد

کپی کردن یک فایل از B به A هنگام ورود به A:

scp [ایمیل محافظت شده]: / مسیر / به / فایل / مسیر / به / مقصد

sftp

دومین برنامه برای کپی فایل از طریق SSH می باشد sftp... همانطور که از نام آن پیداست، جایگزینی مطمئن برای برنامه های ftp است. sftp مانند برنامه اصلی ftp کار می کند. با این حال، به جای ارسال متن واضح، از یک تونل SSH رمزگذاری شده استفاده می کند. مزیت مهم sftp نسبت به ftp این است که نیازی به سرور FTP در حال اجرا بر روی هاست راه دور ندارد. این فقط به یک سرور SSH نیاز دارد. این بدان معنی است که هر دستگاه راه دوری که از طریق یک کلاینت SSH متصل است می تواند به عنوان یک سرور FTP مانند نیز استفاده شود. در اینجا یک جلسه نمونه است:

[ایمیل محافظت شده]~ $ sftp [ایمیل محافظت شده]متصل به 192.168.1.36. sftp> ls dirlist.txt newfile.txt nfile.txt temp فیلم ها اسناد دانلودها تصاویر موسیقی قالب های دسکتاپ عمومی sftp> lls dirlist.txt nfile.txt sftp> ls temp / TakeMeHome sftp> سی دی دریافت دمای /Hptching /Hptalome temp / TakeMeHome به TakeMeHome sftp> خداحافظ

پروتکل SFTP توسط بسیاری از مدیران فایل گرافیکی موجود در توزیع های لینوکس پشتیبانی می شود. با استفاده از Nautilus (GNOME) و Konqueror (KDE)، می‌توانیم URIها (پیوندها) را که با sftp: // شروع می‌شوند در نوار پیمایش وارد کنیم و با فایل‌های واقع در یک سیستم راه دور که یک سرور SSH را اجرا می‌کند، کار کنیم.

ضامن یک واسطه قابل اعتماد بین شرکت کنندگان در معامله است.


SSH (Secure Shell) یک پروتکل دسترسی از راه دور شبکه است که از رمزگذاری و فشرده سازی برای داده های ارسالی استفاده می کند. به بیان ساده، این ابزار بسیار مفید و قدرتمندی است که به شما امکان می دهد در سیستم احراز هویت کنید و به طور کامل از طرف یک کاربر محلی کار کنید، زیرا کیلومترها از ماشین در حال کار دور هستید. همچنین، بر خلاف telnet و rsh - SSH تمام ترافیک را رمزگذاری می کند، به طوری که تمام اطلاعات ارسال شده محرمانه باقی می ماند.

بنابراین، ما قبلاً ssh را نصب کرده‌ایم و ssh-daemon هنگام راه‌اندازی سیستم به راه‌اندازی اضافه شده است. شما می توانید آن را با دستور کنترل کنید:

سرویس ssh توقف | شروع | راه اندازی مجدد

در اوبونتو یا:

/etc/init.d/ssh (شروع | توقف | بارگذاری مجدد | بارگذاری مجدد | راه اندازی مجدد | وضعیت)

در دبیان، یا:

systemctl شروع | توقف | راه اندازی مجدد sshd.service

در ArchLinux (پس از هر ویرایش پیکربندی، باید راه اندازی مجدد کنید). کیت شامل یک کلاینت و یک سرور است.

بیایید آن را در عمل امتحان کنیم! ابتدا یک پوشه ایجاد کنید ~ / .ssh

mkdir ~ / .ssh

با دستور زیر کلیدهایی را برای کاربر سرور ایجاد کنید:

ssh-keygen (به عنوان یک کاربر معمولی).

هنگام تولید، می توانید یک عبارت عبور برای کلید تنظیم کنید (توصیه می شود یک عبارت طولانی تنظیم کنید - پس از آن که حتی با دریافت کلید اما ندانستن رمز عبور از کلید، مهاجم نمی تواند وارد سیستم شود)، یا می توانید فقط با فشار دادن "Enter" از آن بگذرید - در این صورت، رمز عبور هرگز درخواست نخواهد شد. همان کلیدهای عمومی و خصوصی در پوشه ~ / .ssh ظاهر شد.

دستگاه دیگری را پیدا کنید (حتی یک گوشی هوشمند هم این کار را می کند - کلاینت های SSH عالی در اندروید مانند ConnectBot یا JuiceSSH وجود دارد)، ssh را روی آن نصب کنید و با دستور زیر به سرور متصل شوید:

ssh [ایمیل محافظت شده]

اگر همه چیز به درستی انجام شود، رمز عبور کاربر از شما خواسته می شود و پس از وارد شدن، با نمای خط فرمان، خود را در سیستم خود خواهید دید.

اتفاقاً برای ویندوز سرورها و کلاینت های ssh نیز وجود دارد.

پس از لذت بردن از نتیجه زحمات خود، بیایید به بخش خسته کننده تر برویم - راه اندازی مشتری / سرور.

پیکربندی سمت کلاینت وارد است / etc / ssh / ssh_configو سرور یکی - / etc / ssh / sshd_config... کامل ترین راهنمای پیکربندی احتمالاً صفحه man برای man ssh و man sshd_config است، بنابراین توصیه می کنیم آن را بخوانید. و در این مقاله ضروری ترین موارد را در نظر خواهیم گرفت.

سفارشی سازی

پورت استاندارد ssh 22 است. می توان آن را به هر پورت غیر استاندارد تغییر داد (به دلیل امنیت از طریق مبهم بودن هک کردن، یا جلب توجه مهاجمان احتمالی را دشوارتر می کند :) - برای انجام این کار، خط را از نظر خارج کنید:

#پورت ۲۲

و هر چیزی را که می خواهید تا 65535 اضافه کنید (مطمئن شوید که پورت با سایر سرویس ها در تضاد نیست با دستور #netstat -tupln | grep گوش کن).

اکنون هنگام اتصال به سرور، کلاینت باید با کلید زیر بنویسد:

ssh -p [پورت]:

به طور پیش فرض، دسترسی ریشه مجاز است. بسیار توصیه می شود که آن را محدود کنید (و در عوض با استفاده از sudo حقوق کاربر محلی را به درستی محدود کنید). برای انجام این کار، خط "PermitRootLogin" را پیدا کنید و مقدار را به "no" تغییر دهید. همچنین می‌توانید آن را به «بدون رمز عبور» تغییر دهید - در این صورت، ورود به سیستم ریشه تنها از زیر ماشین‌هایی با کلید قابل اعتماد مجاز خواهد بود.

می توانید احراز هویت رمز عبور را غیرفعال کنید و فقط با کلیدها کار کنید - خط "PasswordAuthentication" را پیدا کنید و مقدار را به "no" تغییر دهید. برای چی؟ اگر کسی واقعاً می‌خواهد به سیستم شما دسترسی پیدا کند، می‌تواند هنگام تلاش برای تأیید رمز عبور به زور، یا گوش دادن و رمزگشایی اتصال شما. اگر احراز هویت رمز عبور را غیرفعال کنید و کلید عمومی لپ تاپ کار خود را به عنوان مثال به ~ / .ssh / authorized_keys روی سرور اضافه کنید، همانطور که به یاد داریم فوراً به سرور اجازه ورود خواهیم داشت. اما اگر روی دستگاه شخص دیگری کار می‌کنید و نیاز فوری به دسترسی به سرور ssh دارید، اما همانطور که انتظار می‌رفت، اجازه ورود به ما را نمی‌دهد، چه؟ سپس نمی توانید احراز هویت رمز عبور را غیرفعال کنید، اما از ابزار fail2ban استفاده کنید. فقط آن را از مخزن خود نصب کنید، پس از آن تنظیمات پیش فرض را اعمال می کند و حداقل از کانال ssh شما در برابر حملات brute force محافظت می کند. اطلاعات بیشتر در مورد fail2ban - http://putty.org.ru/articles/fail2ban-ssh.html.

در صورتی که سرور شما کلیدهای پرتاب موشک های هسته ای را ذخیره می کند، می توانید این کار را انجام دهید:

PermitRootLogin no - ورود تحت روت ممنوع است.

PasswordAuthentication no - ورود بدون رمز عبور

بیایید یک کلید طولانی در دستگاه راه دور ایجاد کنیم (-t encryption_type، -b طول بیت):

ssh-keygen -t rsa -b 4096

با یک عبارت عبور به همان اندازه پیچیده (به هر حال، شما نمی توانید رمز عبور فراموش شده را بازیابی کنید. می توانید آن را با دستور "ssh-keygen -p" تغییر دهید، اما به هر حال از شما رمز عبور قدیمی خواسته می شود). بیایید کلید عمومی ماشین محلی راه دور را به ~ / .ssh / authorized_keys در سرور منتقل کنیم، و voila - اکنون می توان دسترسی را از یک ماشین، با استفاده از عبارت عبور کلید خصوصی، به دست آورد. SSH به شما امکان می دهد تنظیمات امنیتی زیادی را تنظیم کنید و تنظیمات خاص زیادی برای این کار دارد - در مورد آنها در انسان بخوانید.

دو گزینه sshd_config به همین منظور عمل می کنند:

LoginGraceTime- زمانی را تنظیم می کند که پس از آن در صورت عدم احراز هویت، اتصال قطع می شود.

MaxAuthTries- تعداد تلاش های نادرست برای ورود به سیستم را تنظیم می کند که پس از رسیدن به آن اتصال قطع می شود.

MaxSessions- تعداد جلسات همزمان (اگر سرور رایانه خانگی شما است که می خواهید از دانشگاه یا از محل کار به آن متصل شوید، معقول است که تعداد جلسات را به یک محدود کنید - ورود رد شده، در این مورد، باعث خواهد شد دلیلی برای افزایش پارانویا، تولید کلیدهای جدید و تغییر رمز عبور). با این حال، اگر دقت کرده باشید، ممکن است متوجه شده باشید که خط "آخرین ورود" در هر ورود به سرور نمایش داده می شود. علاوه بر آن، می توانید پیام تبریک خود را اضافه کنید - خط "Banner" را پیدا کنید و به جای هیچ، مسیر فایل را با متنی که در هنگام ورود خوانده و نمایش داده می شود، تنظیم کنید.

در میان چیزهای دیگر، شما می توانید فقط به کاربران خاصی اجازه ورود به سیستم را بدهید یا به همه افراد به جز کاربران خاص اجازه دهید:

AllowUsers user1- فقط به user1 اجازه ورود بدهید.

DenyUsers user1- به همه اجازه می دهد به جز user1.

و پارامترهای مشابه برای دسترسی به گروه های خاص AllowGroups و DenyGroups هستند.

همچنین می توانید یک جلسه X11 را SSH کنید. برای انجام این کار، خط "ForwardX11" را پیدا کنید و مقدار را به "بله" تغییر دهید.

یک خط مشابه را در پیکربندی مشتری - / etc / ssh / ssh_config پیدا کنید و همچنین به "yes" تغییر دهید.

اکنون باید از طریق ssh با آرگومان -X به سرور متصل شوید:

ssh -X [ایمیل محافظت شده]>

می توانید بلافاصله پس از اتصال برنامه را راه اندازی کنید:

ssh -X [ایمیل محافظت شده]"ضمیمه"

یک GIMP در حال اجرا در یک جلسه ssh به این صورت است:

یا می توانید خروجی را از وب کم لپ تاپ یک کاربر ناشناس دریافت کنید :)

محاسبات مستقیماً روی سرور انجام می شود و خروجی به دستگاه مشتری ارسال می شود (یعنی حتی اگر خود سرور X11 نداشته باشد، برنامه های گرافیکی می توانند بر روی دستگاه راه دور شما ارائه شوند). این طرح به آرامی کار می کند (فراموش نکنید که تمام ترافیک به صورت پویا رمزگذاری شده است) - اما این عملکرد بسیار مفید است.

شما همچنین می توانید فایل ها را در یک جلسه SSH کپی کنید - یک ابزار ساده "scp" برای این کار وجود دارد. می توانید فایل ها را مستقیماً در جلسه از سرور به مشتری انتقال دهید:

scp [ایمیل محافظت شده]: / مسیر / به / فایل / روی / سرور / کجا / ذخیره / روی / محلی / ماشین

بنابراین از مشتری به سرور:

مسیر scp / به / فایل / مشتری [ایمیل محافظت شده]: / مسیر / روی / سرور

اگر نیاز به کپی کردن یک کتاب درسی یا عکس دارید، این بسیار راحت است، اما وقتی مجبور هستید با بسیاری از فایل ها کار کنید، چطور؟ یک چیز بسیار راحت برای این وجود دارد - sshfs (برای نصب در مخازن اکثر * nix-systems موجود است).

فقط مسیر را مانند scp تنظیم کنید:

sshfs [ایمیل محافظت شده]: / خانه / کاربر / mnt /

و پوشه سرور / خانه / کاربر در نقطه نصب / mnt ماشین محلی ظاهر می شود!

جداسازی از طریق umount انجام می شود.

و در نهایت، اجازه دهید در مورد یک ویژگی کمتر شناخته شده صحبت کنیم. اگر یک فایل ایجاد کنید /.ssh/configو آن را به این صورت پر کنید:

میزبان [نام]

نام میزبان

کاربر [نام کاربری سرور]

گزینه های مورد نظر

پسندیدن

ForwardX11 بله

پورت 30000

سپس می توانیم از طریق:

ssh [نام]

ssh -X -p 30000 [ایمیل محافظت شده]

و همه گزینه ها به طور خودکار انتخاب می شوند. بنابراین، با احراز هویت مکرر در یک سرور خاص، این فرآیند را برای چند لحظه ساده می‌کنید.

خوب، ما همه چیز (و حتی بیشتر) را که در مورد SSH برای استفاده روزمره آن باید بدانید را پوشش دادیم - ما یاد گرفتیم که چگونه از احراز هویت کلید استفاده کنیم، از سرور در برابر حملات brute-force محافظت کنیم و به طور کلی، بیشتر حفره های احتمالی را اصلاح کردیم. در واقع، SSH می تواند بسیاری از کارهای دیگر را انجام دهد - به عنوان مثال، تونل کردن و ارسال پورت از طریق یک جلسه ssh، اما بعید است که شما، به عنوان یک کاربر معمولی، هرگز از آن استفاده کنید. منابع اضافی

در این مقاله روش‌های مدرن و راحت کار با سرور از طریق SSH با VPS از Infobox و ابر را بررسی خواهیم کرد.

ما نه تنها در مورد روش معمول اتصال، بلکه در مورد سازماندهی یک اتصال پایدار از طریق اینترنت ناپایدار (به عنوان مثال، مودم های 3G)، و همچنین در مورد ابزارهای اضافی که به کار بر روی SSH کمک می کنند، خواهیم گفت.

اگر کاربر ویندوز هستید و باید به راحتی و به سرعت به سرور لینوکس متصل شوید - به بخش "Putty یا نحوه اتصال سریع به SSH از ویندوز" بروید.

آنچه برای اتصال از طریق SSH باید بدانید

برای اتصال شما نیاز دارید:
  • آدرس آی پی سرور
  • وارد شدن
  • کلمه عبور
اطلاعات مربوط به اتصال به سرور VPS NG را از کجا می توان از Infobox دریافت کرد
پس از سفارش سرویس وارد کنترل پنل https://panel.infobox.ru شوید.
سرویس "VPS NG" را در گوشه سمت راست بالای کنترل پنل در لیست کشویی انتخاب کنید.
سپس به تب "VPS" بروید.

در این بخش خواهید دید آدرس آی پی سرورو می توانید نصب کنید رمز ورود به سرور.


از نام کاربری خود برای اتصال استفاده کنید ریشه, آدرس آی پیاز این صفحه و نصب شده است کلمه عبور.
اگر رمز عبور خود را فراموش کرده اید، روی مورد "ویرایش تنظیمات دسترسی" که در تصویر بالا نشان داده شده است کلیک کنید.

از کجا می توان داده ها را برای اتصال به سرور VPS از Infobox دریافت کرد
وارد کنترل پنل https://panel.infobox.ru شوید.
سرویس VPS را در گوشه سمت راست بالای کنترل پنل در لیست کشویی انتخاب کنید (نام سرویس حاوی نام سیستم عامل سفارش داده شده و منطقه محل است).

سپس به تب "VPS Management" بروید.


از نام کاربری استفاده کنید ریشه، رمز عبور و آدرس ip سرور از این صفحه.

از کجا می توان داده ها را برای اتصال به سرور InfoboxCloud دریافت کرد
پس از ایجاد سرور، اطلاعات اتصال از طریق ایمیل برای شما ارسال می شود. این برای اتصال کافی است.

اگر ایمیل با داده های دسترسی را گم کرده اید و می خواهید به سرور دسترسی داشته باشید
به طور پیش فرض، ورود مدیر سرور به صورت زیر است

وارد کنترل پنل در: https://panel.infobox.ru شوید.
سرویس «Cloud Servers» را در گوشه سمت راست بالای کنترل پنل در لیست کشویی انتخاب کنید.

آدرس IP اختصاصی سرور را می توان در تب "Cloud زیرساخت" کنترل پنل مشاهده کرد.

اگر فیلد " آدرس IP اختصاصیخالی، به این معنی است که هنگام ایجاد سرور، حداقل 1 آدرس IP اختصاصی را به سرور اضافه نکرده اید (و بنابراین دسترسی به سرور از طریق اینترنت وجود ندارد، فقط از شبکه محلی وجود دارد).

برای افزودن یک آدرس IP اختصاصی، روی نام سرور کلیک کنید.

در گروه تنظیمات "شبکه"، روی "پیکربندی" کلیک کنید.


مطمئن شوید که پهنای باند (سرعت) شبکه کافی است (یا در صورت لزوم مقدار بیشتری تنظیم کنید).
سپس روی Add IPv4 Address کلیک کنید و روی Save Changes کلیک کنید.


سرور اکنون یک آدرس IP اختصاصی دارد.


برای تغییر رمز ورود به سرور، همانطور که در تصویر بالا نشان داده شده است، روی "تغییر" کلیک کنید. به این ترتیب می توانید رمز عبور برای دسترسی به سرور تعیین کنید.
حالا میدانید آدرس آی پی سرور، وارد شدن ( ریشه) و کلمه عبور.

پیکربندی کلاینت های SSH

برای ویندوز
برای اتصال به سرور به یک کلاینت SSH نیاز دارید. اگر نیاز به اتصال سریع دارید، Putty توصیه می شود. اگر نیاز به کار با ابزارهای یونیکس مانند scp، rsync و ssh-copy-id دارید، از Cygwin استفاده کنید.
Putty یا نحوه اتصال سریع به SSH از ویندوز
نصب کننده Putty برای ویندوز را از قسمت آخرین نسخه نسخه دانلود کنید و Putty را با تنظیمات پیش فرض نصب کنید.


Putty را راه اندازی کنید (شروع -> همه برنامه ها -> PuTTY -> PuTTY).

آدرس IP سرور را وارد کنید. مطمئن شوید که پورت 22 انتخاب شده و نوع اتصال SSH است و روی "Open" کلیک کنید.


از شما سوال می شود که آیا به سروری که به آن متصل هستید اعتماد دارید یا خیر. شما باید پاسخ دهید "بله".


یک پنجره اتصال باز خواهد شد. از root به عنوان ورود و رمز عبور سرور خود را به عنوان رمز عبور استفاده کنید. رمز عبور را می توان با دکمه سمت راست ماوس از کلیپ بورد جایگذاری کرد. به دلایل امنیتی هنگام تایپ و چسباندن نمایش داده نمی شود.


ارتباط با موفقیت برقرار شد.

Cygwin یا Unix-environment در رایانه ویندوز شما
هنگام کار با سرورهای لینوکس، ممکن است به یک محیط مشابه در رایانه خود نیاز داشته باشید. استفاده از مجموعه ای از ابزارهای مشابه در سرور و رایانه کاری بسیار راحت است، بنابراین حتما Cygwin را امتحان کنید. لینوکس در نگاه اول پیچیده به نظر می رسد. با تسلط تدریجی بر این سیستم عامل، به طور فزاینده ای به Cygwin نیاز خواهید داشت. اعتیاد آور خوب

اتصال اینترنت ناپایدار هنگام اتصال از طریق SSH - چه باید کرد؟

اغلب، هنگام کار روی یک شبکه ناپایدار (به عنوان مثال، از طریق اینترنت تلفن همراه 3G / 4G یا نقاط دسترسی WiFi مختلف)، اتصال SSH قطع می شود. بیایید نگاهی به آنچه می توان در سطح مشتری برای جلوگیری از نیاز به اتصال مجدد انجام داد. این ابزارها برای انجام عملیات حیاتی روی سرور (مثلاً ارتقاء سیستم عامل) مناسب نیستند. برای انجام عملیات حیاتی، باید علاوه بر این، از ابزارهای توضیح داده شده در بخش بعدی مقاله استفاده کنید. هدف از برنامه های کاربردی در این بخش این است که کار SSH را برای کاربر راحت تر کند.
AutoSSH
AutoSSH یک کپی از سرویس گیرنده ssh را شروع می کند و اتصال را نظارت می کند و در صورت لزوم کلاینت ssh را مجددا راه اندازی می کند.

Autossh از ssh برای ایجاد یک حلقه تغییر مسیر ssh (اتصال از محلی به راه دور و بالعکس) استفاده می کند و داده های آزمایشی را به جلو می فرستد و انتظار بازگشت آن ها را دارد. همچنین از استفاده از سرویس اکو از راه دور برای ارسال داده های آزمایشی پشتیبانی می کند.

AutoSSH فقط از 3 پارامتر پشتیبانی می کند:

  • -م<порт>[: پورت اکو]- برای تعیین پورت مانیتورینگ یا پورت مانیتورینگ و پورت سرویس اکو استفاده می شود. اگر پورت سرویس اکو مشخص نشده باشد از شماره پورت بعدی برای آن استفاده می شود. به عنوان مثال، اگر پرچم -M 20000 تنظیم شده باشد، داده های آزمایشی در پورت 20000 ارسال می شود و در پورت 20001 دریافت می شود. اگر -M 0 را تعیین کنید، نظارت بر اتصال غیرفعال می شود و autossh تنها هنگام خروج از ssh، ssh را مجددا راه اندازی می کند (شما می توانید از این با گزینه های ServerAliveInterval و ServerAliveCountMax در OpenSSH استفاده کنید اگر نظارت در موقعیت شما قابل استفاده نباشد).
  • - autossh را حتی قبل از شروع ssh به پس زمینه می فرستد (در این حالت نمی توانید رمز عبور وارد کنید).
  • -V- نمایش نسخه autossh.
همه آرگومان های دیگر به عنوان پارامترهای ssh ارسال می شوند.

به منظور اجتناب از وارد کردن مجدد رمز عبور هنگام بازیابی اتصال، به این کاربر اجازه دهید تا با استفاده از کلید وارد سرور شود، همانطور که در قسمت بالا نشان داده شده است.

نصب AutoSSH در Cygwin در ویندوز
هنگام استفاده از Cygwin در ویندوز، وارد کنید:
آپدیت apt-cyg
apt-cyg نصب autossh


اکنون می توانید به سرور متصل شوید:
autossh -M 20000 [ایمیل محافظت شده] _آدرس سرور


اتصال با موفقیت برقرار شد.

به طور کلی، autossh یک ابزار نسبتاً راحت برای کار از طریق اتصالات اینترنتی ناپایدار و برای سازماندهی تونل های ssh روی سرور است (ما این سناریو را در مقاله جداگانه ای در نظر خواهیم گرفت). عیب autossh این است که اگر تاخیرهای قابل توجهی در زمان وارد کردن دستورات در شبکه رخ دهد (که در شبکه 3G اتفاق می افتد) این ابزار مشکل را حل نمی کند. در این صورت برای وارد کردن هر کاراکتر منتظر پاسخی از سرور خواهید بود که تا حدودی سرعت کار را کاهش می دهد. با این حال، در شرایط عملیاتی عادی، autossh برای حفظ اتصال ssh بسیار مفید است.

Mosh امکان وارد کردن دستورات را بدون انتظار برای پاسخ سرور حل می کند، اما سازگاری این ابزار هنوز بسیار محدود است و قابلیت اطمینان آن پایین است، بنابراین استفاده از آن هنوز توصیه نمی شود.

نحوه انجام عملیات حساس و وقت گیر سرور: مالتی پلکسرهای ترمینال

اگر سیستم عامل را به روز می کنید، نرم افزاری را نصب می کنید یا فقط یک فایل را روی سرور ویرایش می کنید، پس از اتصال از طریق ssh یا autossh، مستقیماً کار نکنید. اگر اتصال SSH قطع شود، جلسه شروع شده هنگام اتصال از طریق SSH را از دست خواهید داد. برای جلوگیری از این اتفاق و هنگامی که مجدداً از طریق SSH وصل می شوید، قطعاً خود را در یک عملیات مداوم روی سرور یا در یک پنجره باز ویرایش فایل از همان لحظه خواهید دید، از مالتی پلکسرهای ترمینال در سرور استفاده کنید: GNU Screen یا tmux.
صفحه گنو
صفحه نمایش در ابتدا برای اجرای چندین جلسه ترمینال در یک ترمینال طراحی شده بود. با این حال، صفحه دارای یک ویژگی مفید دیگر است: توانایی جدا کردن جلسات مجازی از یک ترمینال فیزیکی و اتصال به دیگری. این به ویژه به شما امکان می دهد تا فرآیندهای طولانی مدت را بر روی ماشین های راه دور اجرا کنید، بدون اینکه نیازی به ورود مداوم به آنها داشته باشید.

1. از طریق SSH وارد سرور راه دور شوید.
2. صفحه نمایش را در آنجا اجرا کنید
3. یک تبریک خواهید دید، Enter را فشار دهید.
4. حالا شما می توانید هر کاری را که می خواهید انجام دهید انگار که فقط از طریق SSH به سرور متصل شده اید (مثلاً هر فرآیند طولانی را شروع کنید).
5. می توانید با فشار دادن CTRL + a و سپس d، جلسه را قطع کنید. حتی می توانید اتصال SSH به سرور را پایان دهید.
6. برای بازگشت به جلسه، دوباره از طریق SSH متصل شوید (یا autossh این کار را انجام می دهد) و صفحه -r را وارد کنید.
شما به جلسه در حال اجرا بازگردانده می شوید و روندی که قبلا شروع کرده اید در آن ادامه می یابد. مالتی پلکسرهای ترمینال را در مقالات بعدی با جزئیات بیشتری تحلیل خواهیم کرد.

نتیجه

در این مقاله سعی کردیم به اصول اولیه مورد نیاز برای استفاده راحت از SSH از سیستم عامل های مختلف بپردازیم. البته این همه آن چیزی نیست که ممکن است، اما یک پایه خوب برای شروع است. اگر خطایی در مقاله پیدا کردید، فکر می کنید باید چیز مهمی اضافه کنید، یا فقط یک سوال دارید -

SSH (Secure Shell) یک پروتکل شبکه است که برای کنترل از راه دور یک سرور و انتقال داده ها از طریق اتصالات TCP رمزگذاری شده طراحی شده است. امروزه اکثر سایت های میزبانی، حتی مجازی، هم دسترسی FTP و هم SSH را فراهم می کنند. به نظر من، این عالی است، استفاده از SSH بسیار راحت تر و ایمن تر است.

راه اندازی SSH

پیکربندی برای یک سرور اختصاصی، VDS، VPS در دبیان، اوبونتو انجام خواهد شد. فایل پیکربندی در اینجا قرار دارد: / etc / ssh / sshd_config.
اگر هاست معمولی دارید، همه چیز باید همانطور که باید پیکربندی شود، به بخش بروید.

به طور پیش فرض، دیمون SSHD (ما در حال ایجاد تغییرات در آن هستیم) نیازی به تنظیمات ندارد و به خوبی کار می کند. ما فقط چند تغییر کوچک ایجاد می کنیم تا دسترسی افراد ناخواسته به سرور را محدود کنیم.

در نتیجه ایجاد تغییرات نادرست در فایل پیکربندی، می توانید از طریق ssh دسترسی به سرور را از دست بدهید، بنابراین مطمئن شوید که گزینه های دیگری برای دسترسی به آن دارید، به عنوان مثال با استفاده از کنترل پنل ISPManager.

نحوه محدود کردن دسترسی SSH

همه تغییرات در / etc / ssh / sshd_config انجام می شود
برای اعمال تغییرات، باید

پورت را تغییر دهید

پورت 9724

اکنون، هنگام مجوز، باید به جای پورت استاندارد 22، 9724 را مشخص کنید.
این روش در برابر اکثر ربات های هکر ساده ای که در پورت های استاندارد ضربه می زنند بسیار ساده و موثر است. نکته اصلی در اینجا این است که با سرویس های دیگر تضاد ایجاد نکنید و یک شماره عمدا استفاده نشده را انتخاب کنید.

ارتباط با استفاده از پروتکل قدیمی را رد کنید

در اینجا تعریف می کنیم که ارتباط فقط با استفاده از پروتکل v2 امکان پذیر است

اگر در زیر وارد نشده اید ریشه، قبل از تمام دستورات کنسول باید sudo را اضافه کنید - مخفف آن است جایگزین کاربر و DO- کاربر را تغییر دهید و (زیر آن) انجام دهید. به عنوان مثال، به شما این امکان را می دهد که دستورات را از طرف superuser اجرا کنید ریشه.

تعداد تلاش های مجوز را کاهش دهید

MaxAuthTries 2

تعداد تلاش برای وارد کردن رمز عبور. به طور پیش فرض 6. اگر جستجو ناموفق باشد، جلسه ارتباط خاتمه می یابد.

کاهش مهلت زمانی مجوز

LoginGraceTime 30s

به طور پیش فرض، یک جلسه مجوز می تواند 120 ثانیه طول بکشد. در پایان این زمان، قطع می شود. 2 دقیقه برای مجوز خیلی زیاد است، در تمام این مدت سرور اتصال را باز نگه می دارد که بسیار غیر منطقی است. نیم دقیقه برای چشم کافی است.

دسترسی IP را ببندید

اگر فقط به دسترسی نیاز دارید، ساده ترین و مطمئن ترین راه این است که دسترسی را از هر جایی به جز IP خود یا اگر پویا است، محدوده IP را مسدود کنید.

  1. /etc/hosts.allow را باز کنید و SSHD را در آنجا اضافه کنید: 192.168.1.1

    که در آن 192.168.1.1 IP شما است. اگر یک IP پویا دارید، یک IP با ماسک زیر شبکه تعریف کنید و به جای IP، زیر شبکه خود را یادداشت کنید، به عنوان مثال:

    SSHD: 192.168.0.0/16

  2. /etc/hosts.deny را باز کنید و در آنجا اضافه کنید: SSHD: ALL

راه دیگری برای محدود کردن دسترسی به IP

می توانید از دستورالعمل زیر استفاده کنید:

AllowUsers = *@1.2.3.4

در اینجا ما فقط اجازه دسترسی به IP 1.2.3.4 را می دهیم

مجوز کلید SSH

پیکربندی مجوز ssh بدون رمز عبور بسیار ایمن تر، راحت تر و صحیح تر خواهد بود. مجوز کلید برای این مورد استفاده خواهد شد.

بنابراین این دستورالعمل است:

اتصال راه اندازی شده است. اگر اشتباهی انجام دادید، سرور رد کرد، خطای کلید ما در حین مجوز ظاهر می شود، یعنی سرور کلید ما را قبول نکرد... در این حالت تمام نقاط را به ترتیب مرور کنید و به دنبال خطا باشید.

چکیده: این مقاله ویژگی های پیشرفته OpenSSH را شرح می دهد که زندگی را برای مدیران سیستم و برنامه نویسانی که از پوسته نمی ترسند بسیار آسان تر می کند. برخلاف اکثر کتابچه‌های راهنما، که چیزی غیر از سوئیچ‌ها و گزینه‌های -L/D/R توصیف نمی‌کنند، من سعی کردم تمام ویژگی‌ها و امکانات جالبی را که ssh با خود به ارمغان می‌آورد جمع‌آوری کنم.

هشدار: پست خیلیحجیم است، اما برای سهولت استفاده، تصمیم گرفتم آن را تکه تکه نکنم.

فهرست مطالب:

  • مدیریت کلیدی
  • کپی کردن فایل ها از طریق ssh
  • انتقال جریان های I/O
  • FS از راه دور را از طریق ssh سوار کنید
  • اجرای کد از راه دور
  • نام مستعار و گزینه های اتصال در .ssh / config
  • گزینه های پیش فرض
  • ارسال سرور X
  • ssh به عنوان socks-proxy
  • پورت فورواردینگ - جلو و عقب
  • Reverse Sox Proxy
  • تونل سازی ترافیک L2 / L3
  • حمل و نقل عامل مجوز
  • تونل زدن ssh بر روی ssh از طریق یک سرور نامعتبر ( به احتمال زیاد شما این را نمی دانید)

مدیریت کلیدی

تئوری در چند کلمه: ssh می تواند نه با رمز عبور، بلکه با کلید وارد شود. کلید از یک قسمت باز و یک قسمت بسته تشکیل شده است. باز در فهرست اصلی کاربر "که" وارد سرور می شود، بسته شده - در فهرست اصلی کاربر که به سرور راه دور می رود قرار می گیرد. نصف ها با هم مقایسه می شوند (اغراق می کنم) و اگر همه چیز اوکی باشد آن را رها می کنند. مهم: نه تنها مشتری روی سرور مجاز است، بلکه سرور در رابطه با مشتری نیز مجاز است (یعنی سرور کلید خود را دارد). ویژگی اصلی کلید در مقایسه با رمز عبور این است که با هک کردن سرور نمی توان آن را "دزدید" - کلید از مشتری به سرور منتقل نمی شود و در هنگام مجوز مشتری به سرور ثابت می کند که مالک کلید است. (همان جادوی رمزنگاری).

تولید کلید

شما می توانید کلید خود را با استفاده از دستور ssh-keygen تولید کنید. اگر پارامترها را تنظیم نکنید، همه چیز را همانطور که باید ذخیره می کند.

کلید را می توان با رمز عبور بست. این رمز عبور (در رابط های گرافیکی معمولی) یک بار پرسیده می شود و برای مدتی ذخیره می شود. اگر رمز عبور خالی باشد، هنگام استفاده از آن سؤال نمی شود. بازیابی رمز عبور فراموش شده غیرممکن است.

می توانید رمز عبور یک کلید را با استفاده از دستور تغییر دهید ssh-keygen -p.

ساختار کلیدی

(اگر به سؤال در مورد مکان به طور پیش فرض پاسخ داده شده بود).
~ / .ssh / id_rsa.pub- کلید عمومی. در سرورهایی کپی می شود که باید به آنها دسترسی داشته باشید.
~ / .ssh / id_rsa- کلید خصوصی نباید به کسی نشان داده شود. اگر آن را به جای pub کپی و در یک نامه / چت قرار دهید، باید یک کلید جدید ایجاد کنید. (شوخی نمی کنم، حدود 10 درصد از افرادی که از آنها خواسته می شود کلید ssh را id_rsa بدهند و از این ده درصد، 100 درصد مرد هستند.

در حال کپی کردن کلید در سرور

در دایرکتوری کاربری که می خواهید در آن وارد شوید، اگر یک فایل ایجاد کنید ~ / .ssh / authorized_keysو کلید عمومی را در آنجا قرار دهید، سپس می توانید بدون رمز عبور وارد شوید. لطفاً توجه داشته باشید که مجوزهای موجود در فایل نباید به کاربران غیرمجاز اجازه نوشتن در این فایل را بدهد، در غیر این صورت ssh آن را نمی پذیرد. در کلید، آخرین فیلد است [ایمیل محافظت شده]هیچ ربطی به مجوز ندارد و فقط برای راحتی تعیین اینکه کلید کجاست کار می کند. توجه داشته باشید که این فیلد بدون شکستن ساختار کلید قابل تغییر (یا حتی حذف) است.

اگر رمز عبور کاربر را می دانید، فرآیند را می توان ساده کرد. تیم ssh-copy-id [ایمیل محافظت شده] به شما امکان می دهد بدون ویرایش دستی فایل ها، کلید را کپی کنید.

توجه: در دفترچه های راهنمای قدیمی ssh به autorized_keys2 اشاره شده است. دلیل: نسخه اول ssh بود، سپس دومی (جاری) وجود داشت، آنها مجموعه ای از تنظیمات خود را برای آن ایجاد کردند، همه بسیار خسته بودند و نسخه دوم خیلی وقت پیش به نسخه های بدون "2" تغییر کرد. . یعنی همیشه authorized_keys و به نسخه های مختلف فکر نکنید.

اگر ssh روی یک پورت غیر استاندارد دارید، ssh-copy-id به کمی حقه نیاز دارد: ssh-copy-id "-p 443 [ایمیل محافظت شده]"(توجه به نقل قول ها).

کلید سرور

اولین باری که وارد سرور می شوید، ssh از شما می پرسد که آیا به کلید اعتماد دارید یا خیر. اگر پاسخ منفی دهید، اتصال بسته است. اگر بله - کلید در یک فایل ذخیره می شود ~ / .ssh /known_hosts... پیدا کنید کدام کلید نمی تواند کجا باشد (زیرا مخفی نیست).

اگر کلید سرور تغییر کرده باشد (مثلاً سرور دوباره نصب شده باشد)، ssh فریاد می زند که یک کلید را جعل کند. لطفاً توجه داشته باشید که اگر سرور لمس نشده باشد و ssh فریاد بزند، در این صورت به سرور اشتباهی نفوذ می کنید (مثلاً رایانه دیگری با همان IP در شبکه ظاهر شد ، انواع شبکه های محلی با 192.168.1.1 ، که در آنجا وجود دارد. چندین میلیون نفر در جهان هستند، به ویژه از این رنج می برند) ... سناریوی "مرد شرور در حمله میانی" بعید است، بیشتر اوقات فقط یک خطا در IP است، اگرچه اگر "همه چیز خوب است" و کلید تغییر کرده است، این دلیلی برای افزایش سطح پارانویا است. چند سطح (و اگر مجوز کلید دارید و سرور به طور ناگهانی رمز عبور درخواست می کند - می توان پارانویا را 100٪ روشن کرد و رمز عبور نباید وارد شود).

با دستور می توانید کلید سرور شناخته شده را حذف کنید سرور ssh-keygen -R... در این مورد، شما همچنین باید کلید IP را حذف کنید (آنها به طور جداگانه ذخیره می شوند): ssh-keygen -R 127.0.0.1.

کلید سرور در ذخیره می شود / etc / ssh / ssh_host_rsa_keyو /etc/ssh/ssh_host_rsa_key.pub... اونها می تونند ... باشند:
الف) از سرور قدیمی به سرور جدید کپی کنید.
ب) با ssh-keygen تولید کنید. شما نیازی به تنظیم رمز عبور (یعنی خالی) ندارید. سرور ssh نمی تواند از کلید با رمز عبور استفاده کند.

توجه داشته باشید، اگر سرورها را شبیه سازی می کنید (مثلاً در ماشین های مجازی)، کلیدهای ssh سرور باید دوباره تولید شوند.

در عین حال بهتر است کلیدهای قدیمی را از know_hosts حذف کنید وگرنه ssh به کلید تکراری فحش می دهد.

کپی کردن فایل ها

انتقال فایل ها به سرور گاهی اوقات خسته کننده است. علاوه بر دست و پنجه نرم کردن با sftp و چیزهای عجیب و غریب، ssh به ما دستور می دهد scpکه یک فایل را در یک جلسه ssh کپی می کند.

مسیر Scp / myfile [ایمیل محافظت شده]: / کامل / مسیر / به / جدید / مکان /

شما همچنین می توانید برعکس عمل کنید:
scp [ایمیل محافظت شده]: / کامل / مسیر / به / فایل / مسیر / به / قرار / اینجا

هشدار ماهی: علیرغم اینکه mc می تواند از طریق ssh متصل شود، کپی فایل های حجیم بسیار دردناک خواهد بود. fish (ماژول mc برای کار با ssh به عنوان fs مجازی) بسیار کند است. 100-200kb حد است، سپس آزمون صبر آغاز می شود. (به یاد اوایل جوانی ام افتادم، زمانی که بدون اطلاع از scp، ~ 5 گیگابایت را از طریق fish در mc کپی کردم، در FastEthernet کمی بیش از 12 ساعت طول کشید).

توانایی کپی بسیار عالی است. اما شما می خواهید "ذخیره به عنوان" - و بلافاصله به سرور. و به منظور کپی کردن در حالت گرافیکی نه از یک برنامه خاص، بلکه از هر برنامه آشنا.

این نیز امکان پذیر است:

sshfs

تئوری: ماژول فیوز به شما امکان می دهد درخواست ها را به سیستم فایل از هسته به فضای کاربری برای برنامه مناسب "صادرات" کنید. این امر پیاده سازی «سیستم های شبه فایل» را آسان می کند. به عنوان مثال، ما می توانیم از طریق ssh دسترسی به یک فایل سیستم راه دور را فراهم کنیم تا همه برنامه های محلی (به استثنای چند استثنا) به چیزی مشکوک نشوند.

در واقع، استثنا: O_DIRECT پشتیبانی نمی شود، افسوس (این مشکل با sshfs نیست، به طور کلی یک مشکل فیوز است).

استفاده: بسته sshfs را نصب کنید (خود فیوز را می آورد).

در واقع، نمونه ای از اسکریپت من که desunote.ru را (واقع در رایانه خانگی من - تصاویر از آن در این مقاله نشان داده شده است) روی لپ تاپ من نصب می کند:

#! / bin / bash sshfs desunote.ru:/var/www/desunote.ru/ /media/desunote.ru -o اتصال مجدد

ما یک فایل + x می سازیم، آن را صدا می زنیم، به هر برنامه ای می رویم، می گوییم ذخیره کنید و ببینید:

گزینه های Sshfs که ممکن است مهم باشند: -o reconnect (به شما می گوید که به جای خطا سعی کنید دوباره وصل شوید).

اگر زیاد با داده‌های ریشه کار می‌کنید، می‌توانید (نیازمند) یک idmap بسازید:

-o idmap = کاربر... این کار به صورت زیر است: اگر به عنوان کاربر متصل شویم [ایمیل محافظت شده]، و به صورت محلی ما به عنوان کاربر vasiliy کار می کنیم، سپس می گوییم "در نظر بگیرید که فایل های pupkin فایل های vasiliy هستند". خوب، یا "ریشه" اگر به عنوان root وصل شویم.

در مورد من، idmap مورد نیاز نیست، زیرا نام های کاربری (محلی و راه دور) یکسان است.

توجه داشته باشید که فقط در صورتی که کلید ssh داشته باشیم راحت کار می کند (به ابتدای مقاله مراجعه کنید)، در غیر این صورت، احراز هویت رمز عبور 2-3 اتصال طول می کشد.

با دستور می توانید آن را خاموش کنید fusermount -u / مسیر، با این حال، اگر اتصال گیر کرده باشد (به عنوان مثال، شبکه وجود ندارد)، می توانید / باید این کار را از زیر ریشه انجام دهید: sudo umount -f / مسیر.

اجرای کد از راه دور

ssh می تواند یک فرمان را روی یک سرور راه دور اجرا کند و بلافاصله اتصال را ببندد. ساده ترین مثال:

Ssh [ایمیل محافظت شده] ls / etc /

محتوای / etc / را به سرور خروجی می دهد، در حالی که ما یک خط فرمان محلی خواهیم داشت.

برخی از برنامه ها ترمینال کنترل می خواهند. آنها باید با گزینه -t اجرا شوند:
ssh [ایمیل محافظت شده]-t remove_command

به هر حال، ما می توانیم چیزی شبیه به این انجام دهیم:
ssh [ایمیل محافظت شده] cat / some / file | awk "(چاپ 2 $)" | local_app

این ما را به ویژگی زیر می رساند:

Stdin / out forwarding

فرض کنید می‌خواهیم از راه دور یک درخواست به برنامه بدهیم و سپس خروجی آن را در یک فایل محلی قرار دهیم.

Ssh [ایمیل محافظت شده] command> my_file

فرض کنید می خواهیم خروجی محلی را از راه دور قرار دهیم

Mycommand | scp - [ایمیل محافظت شده]: / مسیر / remote_file

بیایید مثال را پیچیده کنیم - می توانیم فایل ها را از سرور به سرور منتقل کنیم: ما یک زنجیره برای قرار دادن stdin در 10.1.1.2 ایجاد می کنیم که از بیرون در دسترس ما نیست:

Mycommand | ssh [ایمیل محافظت شده]"Scp - [ایمیل محافظت شده]: / مسیر / به / فایل "

همچنین چنین روش مضحکی برای استفاده از لوله وجود دارد (لطفاً در نظرات در LJ پیشنهاد شده است):

Tar -c * | ssh [ایمیل محافظت شده]"cd && tar -x"

Tar فایل ها را به صورت محلی بسته بندی می کند، آنها را در stdout می نویسد، از آنجا ssh آنها را می خواند، آنها را به stdin در سرور راه دور منتقل می کند، جایی که cd آنها را نادیده می گیرد (stdin را نمی خواند)، و tar آنها را می خواند و باز می کند. به اصطلاح Scp برای فقرا است.

نام مستعار

صادقانه بگویم، تا همین اواخر من نمی دانستم و استفاده نمی کردم. ثابت کرد که خیلی راحت است.

در یک شرکت کم و بیش بزرگ، اغلب معلوم می شود که نام سرورها به این صورت است: spb-MX-i3.extrt.int.company.net. و کاربر آنجا برابر با محلی نیست. یعنی باید به این صورت وارد شوید: ssh [ایمیل محافظت شده]هر بار تایپ کردن - از سندروم های تونل سیر نمی شوید. در شرکت های کوچک، مشکل برعکس است - هیچ کس به DNS فکر نمی کند و تماس با سرور به این شکل است: ssh [ایمیل محافظت شده]به طور خلاصه، اما همچنان آزار دهنده است. حتی اگر یک پورت غیر استاندارد داشته باشیم و مثلاً اولین نسخه ssh (سلام به cisks) داشته باشیم، حتی بیشتر درام. سپس همه چیز به این شکل است: ssh -1 -p 334 [ایمیل محافظت شده]خودت را خفه کن من حتی نمی خواهم در مورد درام scp صحبت کنم.

ثبت نام مستعار در سراسر سیستم برای IP (/ etc / host) امکان پذیر است، اما این یک راه اشتباه است (و به هر حال کاربر و گزینه ها را چاپ کنید). راه کوتاه تری وجود دارد.

فایل ~ / .ssh / پیکربندیبه شما این امکان را می دهد که پارامترهای اتصال، از جمله پارامترهای مخصوص سرورها را که از همه مهمتر است، برای هر سرور مخصوص به خود تنظیم کنید. در اینجا یک نمونه پیکربندی است:

میزبان ric نام میزبان ooo-roga-i-kopyta.rf مدیر کاربر ForwardX11 بله فشرده سازی بله نام میزبان خانه میزبان myhome.dyndns.org کاربر vasya رمز عبور احراز هویت خیر

همه گزینه های موجود برای استفاده را می توان در آن مشاهده کرد man ssh_config(با sshd_config اشتباه گرفته نشود).

گزینه های پیش فرض

همانطور که توسط UUSER درخواست می شود: می توانید تنظیمات اتصال پیش فرض را با استفاده از ساختار Host * مشخص کنید، به عنوان مثال:

میزبان * فشرده سازی ریشه کاربر بله

همین کار را می توان در / etc / ssh / ssh_config انجام داد (با / etc / ssh / ssh اشتباه نشود د _config)، اما این به حقوق ریشه نیاز دارد و برای همه کاربران اعمال می شود.

ارسال سرور X

در واقع، من این قسمت را در کانفیگ مثال بالا کمی خراب کردم. ForwardX11 فقط همین است.

تئوری: برنامه های گرافیکی یونیکس معمولا از یک سرور X استفاده می کنند (wayland در راه است، اما هنوز آماده نیست). این بدان معنی است که برنامه راه اندازی می شود و برای ترسیم به سرور X متصل می شود. به عبارت دیگر، اگر یک سرور خالی بدون رابط کاربری دارید و یک سرور x محلی (که در آن کار می کنید) دارید، می توانید برنامه های کاربردی را از سرور فعال کنید تا روی دسکتاپ خود طراحی کنند. معمولا اتصال به سرور X از راه دور امن ترین و بی اهمیت ترین چیز نیست. SSH این فرآیند را ساده کرده و آن را کاملا ایمن می کند. و توانایی جمع آوری ترافیک همچنین به شما امکان می دهد با ترافیک کمتری عبور کنید (یعنی کاهش استفاده از کانال، یعنی کاهش پینگ (به طور دقیق تر، تأخیر)، یعنی کاهش تاخیر).

کلیدها: -X - ارسال سرور X. -Y ارسال مجوز.

به خاطر سپردن ترکیب ssh -XYC به اندازه کافی آسان است [ایمیل محافظت شده]
در مثال بالا (نام شرکت ها ساختگی است) من به دلیلی به سرور ooo-roga-and-hooves.rf وصل می شوم اما برای اینکه به سرور ویندوز دسترسی داشته باشم. همه ما از امنیت مایکروسافت هنگام کار بر روی شبکه می دانیم، بنابراین قرار دادن RDP خالی در خارج از آن ناراحت کننده است. در عوض، از طریق ssh به سرور متصل می شویم و سپس دستور rdesktop را در آنجا اجرا می کنیم:
ssh ric
rdesktop -k en-us 192.168.1.1 -g 1900x1200

و معجزه، پنجره ورود در ویندوز روی دسکتاپ ما. توجه داشته باشید که با دقت رمزگذاری شده است و از ترافیک معمولی ssh قابل تشخیص نیست.

جوراب-پروکسی

وقتی خودم را در هتل دیگری (کافه، کنفرانس) می بینم، وای فای محلی اغلب وحشتناک به نظر می رسد - بنادر بسته، هیچ کس نمی داند در چه سطحی از امنیت است. بله، و اعتماد زیادی به نقاط دسترسی دیگران وجود ندارد (این پارانویا نیست، من کاملاً تماشا کردم که چگونه رمزهای عبور و کوکی ها با استفاده از یک لپ تاپ معمولی حذف می شوند، و 3G را برای همه با نام یک کافه در نزدیکی توزیع می کنند (و چیزهای جالب می نویسند. در حال انجام)).

پورت های بسته مشکل خاصی هستند. آن jabber بسته می شود، سپس IMAP، سپس چیز دیگری.

یک VPN معمولی (pptp، l2tp، openvpn) در چنین شرایطی کار نمی کند - به سادگی مجاز نیست. از نظر تجربی مشخص است که پورت 443 اغلب باقی می ماند و در حالت CONNECT، یعنی "همانطور که هست" منتقل می شود (هنوز می توان http معمولی را به صورت شفاف روی ماهی مرکب پیچید).

راه حل این است جوراب-پروکسیحالت عملکرد ssh اصل آن: کلاینت ssh به سرور متصل می شود و به صورت محلی گوش می دهد. پس از دریافت درخواست، آن را (از طریق یک اتصال باز) به سرور ارسال می کند، سرور مطابق درخواست یک اتصال برقرار می کند و تمام داده ها را به مشتری ssh ارسال می کند. و به فردی که درخواست داده پاسخ می دهد. برای کار، باید به برنامه ها بگویید "use socks-proxy". و آدرس IP پروکسی را مشخص کنید. در مورد ssh، این اغلب لوکال هاست است (به این ترتیب کانال خود را به افراد غریبه نمی دهید).

اتصال در حالت sock-proxy به شکل زیر است:
ssh -D 8080 [ایمیل محافظت شده]

با توجه به این واقعیت که وای فای دیگران اغلب نه تنها انجیر است، بلکه دارای تأخیر است، ممکن است خوب باشد که گزینه -C (فشرده سازی ترافیک) را فعال کنید. تقریباً شبیه اپرا توربو به نظر می رسد (فقط عکس ها خیلی تنگ نیستند). در گشت و گذار واقعی بر روی فشارهای http حدود 2-3 بار (بخوانید - اگر یک بدبختی 64 کیلوبیتی دارید، صفحات مگابایتی را نه در دو دقیقه، بلکه در 40 ثانیه باز خواهید کرد. بد است، اما بهتر است). اما مهمتر از همه: بدون کوکی های دزدیده شده یا جلسات شنیده شده.

بیخود نبود که در مورد بنادر بسته گفتم. پورت 22 دقیقاً به همان روشی که درگاه جابر "غیر ضروری" بسته می شود. راه حل این است که سرور را روی پورت 443 آویزان کنید. شما نباید با 22 شلیک کنید، گاهی اوقات سیستم هایی با DPI (بازرسی بسته های عمیق) وجود دارند که "شبه ssl" شما اجازه ورود به آنها را نمی دهد.

کانفیگ من به این صورت است:

/ etc / ssh / sshd_config:
(قطعه)
پورت 22
پورت 443

و در اینجا یک قطعه ~ / .ssh / config از یک لپ تاپ است که vpn را توصیف می کند

میزبان vpn نام میزبان desunote.ru کاربر vasya فشرده سازی بله DynamicForward 127.1: 8080 پورت 443

(به نماد "تنبل" لوکال هاست - 127.1 توجه کنید، این یک راه کاملا قانونی برای نوشتن 127.0.0.1 است)

پورت حمل و نقل

ما به بخش بسیار دشواری از عملکرد SSH می رویم که به شما امکان می دهد عملیات تونل زنی TCP گیج کننده "از سرور" و "به سرور" را انجام دهید.

برای درک وضعیت، تمام مثال‌های زیر به این نمودار اشاره می‌کنند:

نظرات: دو شبکه خاکستری. شبکه اول شبیه یک شبکه اداری معمولی (NAT) است، شبکه دوم یک "دروازه" است، یعنی سروری با رابط سفید و خاکستری که به شبکه خصوصی خود نگاه می کند. در ادامه، ما فرض می کنیم که لپ تاپ "ما" A است و "سرور" B است.

وظیفه: ما برنامه ای داریم که به صورت محلی اجرا می شود، باید کاربر دیگری (خارج از شبکه ما) را فعال کنیم تا به آن نگاه کند.

راه حل: ارسال پورت محلی (127.0.0.1:80) به یک آدرس در دسترس عموم. فرض کنید B "در دسترس عموم" ما هشتادمین پورت را با چیز مفیدی اشغال کرده است، بنابراین آن را به یک پورت غیر استاندارد (8080) ارسال می کنیم.

پیکربندی نهایی: درخواست های 8.8.8.8:8080 به لوکال هاست لپ تاپ A می رود.

Ssh -R 127.1: 80: 8.8.8.8: 8080 [ایمیل محافظت شده]

گزینه امکان تغییر مسیر از یک کنترل از راه دور ( آر emote) پورت سرور به پورت (محلی) شما.
نکته مهم: اگر بخواهیم از آدرس 8.8.8.8 استفاده کنیم، باید GatewayPorts را در تنظیمات سرور B فعال کنیم.
وظیفه... در سرور "B" یک دیمون خاص (مثلاً سرور sql) در حال گوش دادن است. برنامه ما با سرور سازگار نیست (بیت های مختلف، سیستم عامل، ادمین شیطانی، محدودیت ها و محدودیت ها و غیره). ما می خواهیم به صورت محلی به لوکال هاست راه دور "y.

پیکربندی نهایی: درخواست‌های لوکال هاست: 3333 در "A" باید توسط دیمون در لوکال هاست: 3128 "B" ارائه شود.

Ssh -L 127.1: 3333: 127.1: 3128 [ایمیل محافظت شده]

گزینه امکان تماس های محلی ( L ocal) برای ارسال به سرور راه دور.

وظیفه: در سرور "B" یک سرویس خاص در حال گوش دادن به رابط خاکستری است و ما می خواهیم به یک همکار (192.168.0.3) این فرصت را بدهیم تا به این برنامه نگاه کند.

پیکربندی نهایی: درخواست ها برای آدرس IP خاکستری ما (192.168.0.2) به رابط خاکستری سرور B می روند.

Ssh -L 192.168.0.2:8080:10.1.1.1:80 [ایمیل محافظت شده]

تونل های تو در تو

البته می توان تونل ها را تغییر مسیر داد.

بیایید کار را پیچیده تر کنیم: اکنون می خواهیم به یک همکار برنامه ای را نشان دهیم که روی لوکال هاست روی سرور با آدرس 10.1.1.2 (در پورت 80) اجرا می شود.

راه حل مشکل است:
ssh -L 192.168.0.2:8080:127.1:9999 [ایمیل محافظت شده] ssh -L 127.1: 9999: 127.1: 80 [ایمیل محافظت شده]

چه اتفاقی می افتد؟ به ssh می گوییم درخواست های محلی را از آدرس ما به لوکال هاست سرور B هدایت کند و بلافاصله پس از اتصال، ssh (یعنی یک کلاینت ssh) را روی سرور B با گزینه گوش دادن به لوکال هاست و ارسال درخواست ها به سرور 10.1.1.2 راه اندازی کند. جایی که مشتری باید متصل شود). پورت 9999 خودسرانه انتخاب شده است، نکته اصلی این است که در تماس اول و در تماس دوم مطابقت دارد.

Reverse Sox Proxy

اگر مثال قبلی برای شما ساده و واضح به نظر می رسید، سعی کنید حدس بزنید که این مثال چه کاری انجام می دهد:
ssh -D 8080 -R 127.1: 8080: 127.1: 8080 [ایمیل محافظت شده] ssh -R 127.1: 8080: 127.1: 8080 [ایمیل محافظت شده]

اگر شما یک افسر امنیتی هستید که وظیفه شما ممنوعیت استفاده از اینترنت در سرور 10.1.1.2 است، می توانید شروع به کندن موهای کشیش کنید، زیرا این دستور دسترسی به اینترنت را برای سرور 10.1.1.2 سازماندهی می کند. یک پراکسی sox که روی کامپیوتر "A" اجرا می شود. ترافیک کاملاً رمزگذاری شده است و از سایر ترافیک های SSH قابل تشخیص نیست. و ترافیک خروجی از رایانه از دیدگاه شبکه 192.168.0 / 24 از ترافیک عادی رایانه A قابل تشخیص نیست.

تونل سازی

اگر در این مرحله کشیش بخش امنیت با سر کچل نمی درخشد و ssh هنوز به عنوان دشمن شماره یک امنیتی در لیست نیست، قاتل نهایی همه چیز و همه کس اینجاست: تونل IP یا حتی اترنت. در رادیکال ترین موارد، این اجازه می دهد تا تونل dhcp، جعل arp از راه دور، بیدار شدن در شبکه و سایر زشتی های سطح دوم.

(من خودم متأسفانه از این استفاده نکردم).

به راحتی قابل درک است که در چنین شرایطی برای هر DPI (بازرسی بسته های عمیق) غیرممکن است که چنین تونل هایی را بگیرد - یا ssh مجاز است (بخوانید - آنچه می خواهید انجام دهید) یا ssh ممنوع است (و می توانید با خیال راحت چنین تونل هایی را ترک کنید. جمع احمق ها بدون احساس کوچکترین پشیمانی).

ارسال مجوز

اگر فکر می کنید که این همه است، پس ... ... با این حال، برخلاف نویسنده که هنوز "پایین" او نوشته نشده است، خواننده پیشاپیش می بیند که حروف زیادی در زیر وجود دارد و هیچ دسیسه ای وجود ندارد.

OpenSSH به سرورها اجازه می دهد تا به عنوان یک سکوی پرشی برای اتصال به سرورهای دیگر استفاده شوند، حتی اگر آن سرورها غیرقابل اعتماد باشند و به هر شکلی که می خواهند مورد سوء استفاده قرار گیرند.

تصویر را تکرار می کنم:

فرض کنید می خواهیم به سرور 10.1.1.2 متصل شویم که آماده پذیرش کلید ما است. اما ما نمی خواهیم آن را به 8.8.8.8 کپی کنیم، زیرا یک گذرگاه وجود دارد و نیمی از مردم sudo دارند و می توانند از طریق دایرکتوری های افراد دیگر جستجو کنند. یک مصالحه، داشتن یک کلید ssh "متفاوت" است که مجوز می دهد [ایمیل محافظت شده]در 10.1.1.2، اما اگر نمی خواهیم کسی را از 8.8.8.8 به 10.1.1.2 اجازه دهیم، این یک گزینه نیست (مخصوصاً اینکه کلید نه تنها قابل استفاده است، بلکه برای خود "برای یک روز بارانی" نیز کپی می شود. ").

Ssh امکان فوروارد عامل ssh را ارائه می دهد (این سرویسی است که برای یک کلید رمز عبور می خواهد). گزینه ssh -Aمجوز را به یک سرور راه دور ارسال می کند.

تماس به این شکل است:

Ssh -A [ایمیل محافظت شده] ssh [ایمیل محافظت شده]

سرویس گیرنده ssh راه دور (در 8.8.8.8) می تواند به 10.1.1.2 ثابت کند که ما فقط در صورتی هستیم که به این سرور متصل شده باشیم و به کلاینت ssh دسترسی به عامل مجوز آن (اما نه کلید!) داده باشیم.

بیشتر اوقات کار می کند.

با این حال، اگر سرور واقعاً بد است، آنگاه روت سرور می‌تواند از سوکت برای جعل هویت زمانی که ما متصل هستیم استفاده کند.

یک روش حتی قدرتمندتر وجود دارد - ssh را به یک لوله ساده (به معنای "لوله") تبدیل می کند که از طریق آن کار را با یک سرور راه دور از طریق و از طریق آن انجام می دهیم.

مزیت اصلی این روش استقلال کامل از سرور پروکسی است. او می‌تواند از یک سرور ssh جعلی استفاده کند، همه بایت‌ها و همه اقدامات را ثبت کند، هر داده‌ای را رهگیری کند و آن‌طور که می‌خواهد جعل کند - تعامل بین سرور "نهایی" و مشتری انجام می‌شود. اگر داده های سرور ترمینال دستکاری شود، امضا همگرا نمی شود. اگر داده ها دستکاری نشده باشند، جلسه در حالت امن برقرار می شود، بنابراین چیزی برای رهگیری وجود ندارد.

من این تنظیمات جالب را نمی‌شناختم، بنابراین تغییر و تحول آن را کشف کردم.

این پیکربندی به دو ویژگی ssh گره خورده است: گزینه -W (ssh را به "لوله" تبدیل می کند) و گزینه پیکربندی ProxyCommand(گزینه های خط فرمان، به نظر می رسد، خیر)، که می گوید "برنامه را اجرا کنید و به stdin / out آن بچسبید". این گزینه‌ها اخیراً ظاهر شده‌اند، بنابراین کاربران centos قابل بحث نیستند.

به نظر می رسد (اعداد برای تصویر بالا):

Ssh / پیکربندی:
میزبان raep HostName 10.1.1.2 کاربر user2 ProxyCommand ssh -W% h:% p [ایمیل محافظت شده]

خوب، ارتباط بی اهمیت است: ssh raep.

باز هم یک نکته مهم: سرور 8.8.8.8 نمی تواند ترافیک را رهگیری یا جعل کند، از یک عامل مجوز کاربر استفاده کند یا ترافیک را تغییر دهد. انکار - بله، می تواند. اما اگر اجازه داده شود، بدون رمزگشایی یا اصلاح از خود عبور می کند. برای اینکه پیکربندی کار کند، باید کلید عمومی خود را در authorized_keys داشته باشید [ایمیل محافظت شده]و در [ایمیل محافظت شده]

البته، اتصال را می توان با سایر بابل ها مجهز کرد - ارسال پورت، کپی فایل، پراکسی های sox، تونل های L2، تونل سازی سرور X و غیره.
ssh tunneling اضافه کردن برچسب

مقالات مرتبط برتر