لینوکس / یونیکس فرماندهی: sshd

نام

sshd - OpenSSH daemon SSH

خلاصه داستان

sshd [- deiqtD46 ] [- b بیت ] [- f config_file ] [- g login_grace_time ] [- h host_key_file ] [- k key_gen_time ] [- o گزینه ] [- پورت پورت ] [- u len ]

شرح

sshd (SSH Daemon) برنامه daemon برای ssh (1) است. با هم این برنامه ها rlogin را جایگزین می کنند و rsh و برقراری ارتباطات امن رمزگذاری شده بین دو میزبان غیرقابل اعتماد بیش از یک شبکه ناامن. این برنامه ها در نظر گرفته شده اند تا نصب و استفاده از آن آسان باشد.

sshd daemon است که برای ارتباطات از مشتریان گوش می دهد. این به طور معمول در بوت از / etc / rc شروع می شود. این یک daemon جدید برای هر اتصال ورودی است. daemons forked مسئولیت تبادل کلیدی، رمزگذاری، احراز هویت، اجرای فرمان و تبادل اطلاعات را مدیریت می کند. این پیاده سازی sshd از هر دو نسخه پروتکل SSH نسخه 1 و 2 به طور همزمان پشتیبانی می کند.

پروتکل SSH نسخه 1

هر میزبان یک کلید اختصاصی میزبان (معمولا 1024 بیت) دارد که برای شناسایی میزبان مورد استفاده قرار می گیرد. علاوه بر این، زمانی که daemon شروع می شود، یک کلید سرور RSA تولید می کند (به طور معمول 768 بیت). این کلید به طور معمول هر ساعت تجدید می شود اگر از آن استفاده شده است و هرگز در دیسک ذخیره نمی شود.

هر زمان که یک سرویس دهنده متصل شود، daemon با کلیدهای میزبان و سرور عمومی پاسخ می دهد. مشتری کلید کلید میزبان RSA را در برابر پایگاه داده خود مقایسه می کند تا تأیید کند که تغییر نکرده است. سپس مشتری یک شماره تصادفی 256 بیتی تولید می کند. این شماره تصادفی را با استفاده از کلید میزبان و کلید سرور رمزگذاری می کند و شماره رمزگذاری شده را به سرور می فرستد. هر دو طرف از این شماره تصادفی به عنوان کلید جلسه استفاده می کنند که برای رمزگذاری تمام ارتباطات بیشتر در جلسه استفاده می شود. بقیه جلسه رمزنگاری شده با استفاده از یک رمزنگاری معمولی، در حال حاضر Blowfish یا 3DES، با 3DES که به طور پیش فرض مورد استفاده قرار می گیرد. مشتری الگوریتم رمزنگاری را برای استفاده از آنهایی که توسط سرور ارائه می شود انتخاب می کند.

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

تأیید اعتبار Rhost ها به طور معمول غیرفعال است، زیرا در اصل ناامن است، اما اگر در صورت لزوم، بتواند در فایل پیکربندی سرور فعال شود. امنیت سیستم بهبود نمی یابد مگر اینکه rshd rlogind و rexecd غیرفعال شوند (بنابراین به طور کامل rlogin و rsh را به دستگاه غیرفعال می کند).

پروتکل SSH نسخه 2

نسخه 2 با این نسخهها کار مشابه: هر میزبان دارای کلید اختصاصی میزبان (RSA یا DSA) است که برای شناسایی میزبان استفاده می شود. با این حال، وقتی daemon شروع می شود، یک کلید سرور ایجاد نمی کند. امنیت به جلو از طریق یک توافقنامه کلید دفی هیلیمن ارائه می شود. این توافق کلید به یک کلید اشتراک عمومی منجر می شود.

بقیه جلسه رمزنگاری شده با استفاده از رمزنگاری متقارن، در حال حاضر 128 بیت AES، Blowfish، 3DES، CAST128، Arcfour، 192 بیت AES، و یا AES 256 بیتی است. مشتری الگوریتم رمزنگاری را برای استفاده از آنهایی که توسط سرور ارائه می شود انتخاب می کند. علاوه بر این، یکپارچگی جلسه از طریق یک کد تأیید پیغام پیام (hmac-sha1 یا hmac-md5) ارائه می شود.

نسخه پروتکل 2 یک کاربر مبتنی بر کلید عمومی (PubkeyAuthentication) یا روش تأیید هویت HostbasedAuthentication را فراهم می کند، احراز هویت رمز عبور معمولی و روش مبتنی بر پاسخ به چالش.

اعدام فرماندهی و انتقال داده

اگر مشتری با موفقیت خود را تأیید کند، یک گفت و گو برای آماده سازی جلسه وارد شده است. در این زمان مشتری ممکن است چیزهایی مانند تخصیص پیسیتی، حمل و نقل X11 اتصالات، حمل و نقل اتصالات TCP / IP و یا ارسال عامل اتصال احراز هویت را از طریق کانال امن درخواست دهد.

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

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

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

sshd وقتی فایل سیگنال خود را دریافت می کند، فایل خود را پیکربندی می کند، SIGHUP با اجرای خود با نامی که از آن آغاز شده است، یعنی / usr / sbin / sshd

گزینه ها به شرح زیر هستند:

-b بیت

تعداد بیت ها در پروتکل پروتکل طولانی پرونده 1 کلید سرور (پیش فرض 768) را مشخص می کند.

-d

حالت اشکال زدایی. سرور خروجی اشکال زدایی را به سیستم وارد می کند و خود را در پس زمینه قرار نمی دهد. سرور نیز کار نخواهد کرد و تنها یک اتصال را پردازش می کند. این گزینه تنها برای اشکالزدایی برای سرور در نظر گرفته شده است. گزینه های چندگانه افزایش سطح اشکال زدایی. حداکثر 3 است

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

-f configuration_file

نام پرونده پیکربندی را مشخص می کند. به طور پیش فرض / etc / ssh / sshd_config sshd برای شروع اگر هیچ فایل پیکربندی وجود ندارد

-g login_grace_time

زمان فریب دادن مشتریان برای تأیید اعتبار خود (به طور پیش فرض 120 ثانیه) را می دهد. اگر مشتری در طی این چند ثانیه ثانیه تأیید هویت کاربر را نپذیرد، سرور قطع و خروج می شود. مقدار صفر هیچ محدودیتی را نشان نمی دهد.

-h host_key_file

یک پرونده را که از آن میزبان کلید خوانده می شود مشخص می کند. این گزینه باید داده شود اگر sshd به عنوان ریشه اجرا نشود (همانطور که فایل های اصلی میزبان معمولی به طور معمول توسط هر شخصی، فقط ریشه قابل خواندن نیست). / etc / ssh / ssh_host_key برای پروتکل نسخه 1 و / etc / ssh / ssh_host_rsa_key و / etc / ssh / ssh_host_dsa_key برای نسخه پروتکل 2 است. ممکن است چندین پرونده کلیدی میزبان برای نسخه های پروتکل های مختلف و کلید میزبان الگوریتم ها

-من

مشخص می کند که sshd از inetd اجرا می شود. sshd به طور معمول از inetd اجرا نمی شود، زیرا قبل از اینکه بتواند به مشتری پاسخ دهد، کلید سرور را تولید می کند، و این ممکن است چندین ثانیه طول بکشد. مشتریان باید هر زمان که کلیدی بازسازی می شوند بیش از حد صبر کنید. با این حال، با استفاده از اندازه کوچک کلید (به عنوان مثال، 512) با استفاده از sshd از inetd ممکن است امکان پذیر باشد.

-k key_gen_time

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

گزینه -o

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

پورت پورت

پورت مشخص می کند که سرور برای اتصالات (به طور پیش فرض 22) را بخواند. گزینه های پورت چندگانه مجاز می باشند. بنادر مشخص شده در پرونده پیکربندی زمانی که یک پورت خط فرمان مشخص می شود نادیده گرفته می شود.

-q

حالت آرام هیچ چیزی به سیستم وارد نشده است. به طور معمول، ابتدا، احراز هویت و خاتمه هر اتصال به سیستم وارد می شوند.

حالت آزمون. فقط اعتبار پرونده پیکربندی و سلامت کلیدها را بررسی کنید. این برای به روز رسانی sshd قابل اعتماد است زیرا ممکن است گزینه های پیکربندی تغییر کند.

-u len

این گزینه برای مشخص کردن اندازه فیلد در ساختار utmp که نام میزبان از راه دور را مشخص می کند استفاده می شود. اگر نام میزبان حل شده طولانی تر از len باشد، به جای آن از مقدار اعشاری dotted استفاده می شود. این اجازه می دهد تا میزبان با نام های میزبان بسیار طولانی که این فیلد را سرازیر می کند تا هنوز مشخص شود. مشخص کردن u0 نشان می دهد که فقط آدرس دهی های نقطه ای باید در فایل utmp قرار داده شود. - u0 همچنین برای جلوگیری از ایجاد sshd از درخواستهای DNS استفاده می شود مگر اینکه مکانیزم احراز هویت یا پیکربندی آن به آن نیاز داشته باشد. مکانیزم های تأیید اعتبار که ممکن است نیاز به DNS داشته باشند عبارتند از: RhostsAuthentication RhostsRSAAhentication Authentication Authentication و استفاده از یک گزینه = = pattern-list در یک فایل کلیدی. گزینه های پیکربندی که نیاز به DNS دارند شامل استفاده از الگو USER @ HOST در AllowUsers یا DenyUsers است

-D

هنگامی که این گزینه مشخص شده است، sshd جدا نخواهد شد و به یک daemon تبدیل نخواهد شد. این به نظارت آسان بر sshd اجازه می دهد

-4

نیروهای sshd برای استفاده از آدرس های IPv4 تنها.

-6

نیروهای sshd برای استفاده از آدرس های IPv6 تنها.

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

sshd اطلاعات پیکربندی را از / etc / ssh / sshd_config (یا فایل مشخص شده با - f در خط فرمان) خواند. فرمت فایل و گزینه های پیکربندی در sshd_config5 شرح داده شده است.

فرآیند ورود

هنگامی که کاربر با موفقیت وارد سیستم می شود، sshd این موارد را انجام می دهد:

  1. اگر ورود به سیستم در یک tty باشد و هیچ فرمان مشخص نشده است، آخرین ورود به سیستم و / etc / motd چاپ می شود (مگر اینکه در فایل پیکربندی یا با $ HOME / .hushlogin جلوگیری شود، به بخش Sx FILES مراجعه شود).
  2. اگر ورود به سیستم در یک tty باشد، زمان ثبت نام را ثبت می کند.
  3. چک کردن / etc / nologin اگر آن وجود داشته باشد، محتویات را چاپ می کند و محتویات را خاتمه می دهد (مگر اینکه ریشه).
  4. تغییراتی که با امتیازات کاربر معمولی اجرا می شود.
  5. محیط پایه را تنظیم می کند.
  6. $ HOME / .ssh / محیط خوانده می شود اگر آن وجود داشته باشد و کاربران مجاز به تغییر محیط خود هستند. گزینه " PermitUserEnvironment" را در sshd_config5 ببینید.
  7. تغییرات در دایرکتوری خانگی کاربر
  8. اگر $ HOME / .ssh / rc وجود داشته باشد، آن را اجرا می کند؛ else اگر / etc / ssh / sshrc وجود داشته باشد، آن را اجرا می کند؛ در غیر این صورت xauth اجرا می شود فایلهای `` rc '' به پروتکل احراز هویت X11 و کوکی در ورودی استاندارد داده می شود.
  9. پوسته یا فرمان کاربر را اجرا می کند.

قالب فایل Authorized_Keys

$ HOME / .ssh / authorized_keys فایل پیش فرض است که لیست کلیدهای عمومی که برای تأیید RSA در نسخه پروتکل 1 و برای تأیید هویت کلید عمومی (PubkeyAuthentication) در پروتکل نسخه 2 لیست شده است. AuthorizedKeysFile ممکن است برای مشخص کردن یک فایل جایگزین استفاده شود.

هر خط از فایل حاوی یک کلید است (خطوط خالی و خطوط با شروع با "#" به عنوان نظرات نادیده گرفته می شوند). هر کلید عمومی RSA متشکل از زمینه های زیر است، با فضاهای جداگانه: گزینه ها، بیت ها، نماد، مدول، نظر. هر کدام از پروتکل های پروتکل 2 کلید عمومی عبارتند از: گزینه ها، keytype، keyedype key64، comment. فیلد گزینه اختیاری است حضور آن تعیین می شود که آیا خط با یک عدد شروع می شود یا خیر (فیلد گزینه ها هرگز با یک عدد شروع نمی شود). بیت ها، نمایه ها، ماژول ها و زمینه های نظر به کلید RSA برای نسخه پروتکل 1؛ فیلد comment برای هیچ چیزی مورد استفاده قرار نمی گیرد (اما ممکن است برای کاربر برای شناسایی کلید مناسب باشد). برای نسخه پروتکل 2 نوع کلید `` ssh-dss '' یا `` ssh-rsa '' است

توجه داشته باشید که خطوط در این فایل معمولا چند صد بایت طول می کشد (به دلیل اندازه کدهای کلید عمومی). شما نمی خواهید آنها را تایپ کنید به جای آن، identity.pub id_dsa.pub یا فایل id_rsa.pub را کپی کنید و آن را ویرایش کنید.

sshd حداقل مقدار مدول کلیدی RSA برای پروتکل 1 و پروتکل 2 کلید 768 بیت را اجرا می کند.

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

از = pattern-list

مشخص می کند که علاوه بر تأیید هویت کلید عمومی، نام کانون میزبان از راه دور باید در لیست های جدا شده با کاما از الگوهای (* * و `؟ 'به عنوان wildcards خدمت) باشد. این لیست همچنین ممکن است حاوی الگوهایی باشد که پیش از آن با استفاده از `! 'حذف شده اند. ؛ اگر نام میزبان قمری با یک الگو منفی مطابقت داشته باشد، کلید پذیرفته نمی شود. هدف از این گزینه این است که بهصورت اختیاری امنیت را افزایش دهد: تأیید هویت کلید عمومی خود به شبکه یا سرورهای نام یا هر چیزی (و نه کلیدی) اعتماد ندارد. با این حال، اگر کسی به نوعی کلید را دزدیده باشد، کلید اجازه می دهد یک مزاحم برای ورود به سیستم از هر نقطه از جهان. این گزینه اضافی باعث می شود که کلید دزدیده شده دشوارتر شود (سرورهای نام و / یا روترها علاوه بر فقط کلیدی باید خطرناک باشند).

command = command

مشخص می کند که دستور هر بار که این کلید برای احراز هویت استفاده می شود، اجرا می شود. دستور داده شده توسط کاربر (در صورت وجود) نادیده گرفته می شود. این دستور در pty اجرا می شود اگر مشتری درخواست pty؛ در غیر این صورت بدون یک tty اجرا می شود. اگر یک کانال تمیز 8 بیتی مورد نیاز باشد، نباید یک pty را درخواست کند یا باید بدون pty یک نقل قول ممکن است با نقل قول کردن آن با یک backslash صورت بگیرد. این گزینه ممکن است مفید باشد برای محدود کردن کلیدهای عمومی خاص برای انجام یک عملیات خاص. یک مثال ممکن است یک کلید باشد که اجازه پشتیبان گیری از راه دور را می دهد اما هیچ چیز دیگری نیست. توجه داشته باشید که مشتری ممکن است TCP / IP و / یا X11 forwarding را مشخص کند، مگر اینکه به صراحت ممنوع باشد. توجه داشته باشید که این گزینه مربوط به اجرای پوسته، فرمان یا زیر سیستم می باشد.

محیط = NAME = ارزش

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

بدون حمل و نقل پورت

Forbids TCP / IP forwarding هنگامی که این کلید برای احراز هویت استفاده می شود. هر درخواستی که توسط مشتری انجام می شود، خطایی را نشان می دهد. این ممکن است به عنوان مثال در ارتباط با گزینه فرمان استفاده شود.

بدون X11-حمل و نقل

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

بدون عامل حمل و نقل

هنگام استفاده از این کلید برای احراز هویت، عامل ارسال احراز هویت را ممنوع می کند.

no-pty

تخصیص tty مانع می شود (درخواست برای اختصاص یک pty به شکست مواجه خواهد شد).

permitopen = میزبان: پورت

محدود کردن اسکریپت محلی ssh -L که در آن فقط اتصال به میزبان و پورت مشخص شده است. آدرس IPv6 را می توان با یک دستورالعمل جایگزین مشخص کرد: میزبان / پورت چند گزینه مجاز ممکن است جدا از هم توسط کاما استفاده شوند. هیچ تطبیق الگوی بر روی نامهای میزبان مشخص شده انجام نمی شود، آنها باید دامنه یا آدرس های حروف الفبا باشند.

مثال ها

1024 33 12121 ... 312314325 ylo@foo.bar

از = "*. niksula.hut.fi،! pc.niksula.hut.fi" 1024 35 23 ... 2334 ylo @ niksula

command = "dump / home"، no-pty، no-port-forwarding 1024 33 23 ... 2323 backup.hut.fi

permitopen = "10.2.1.55:80"، permitopen = "10.2.1.56:25" 1024 33 23 ... 2323

Ssh_Known_Hosts فرمت فایل

فایلهای / etc / ssh / ssh_known_hosts و $ HOME / .ssh / known_hosts حاوی کلیدهای میزبان عمومی برای همه میزبانهای شناخته شده هستند. فایل جهانی باید توسط سرپرست (اختیاری) تهیه شود و فایل هر کاربر به صورت خودکار نگهداری شود: هر زمان که کاربر از یک میزبان ناشناخته متصل شود کلید آن به فایل هر کاربر اضافه می شود.

هر خط در این فایل ها حاوی فیلدهای زیر است: نام میزبان، بیت، نماینده، مدول، نظر. زمینه ها با فاصله ها جدا می شوند.

نام های میزبان لیستی از الگوهای جدا شده با کاما ('*' و '؟' به عنوان علامت های تجاری عمل می کنند)؛ هر الگوی، به نوبه خود، در برابر نام میزبان قمری (هنگام تأیید اعتبار یک مشتری) و یا در برابر نام کاربر ارائه شده (هنگام تایید یک سرور) مطابقت دارد. یک الگوی ممکن است قبل از "!" برای نشان دادن نفی: اگر نام میزبان با الگویی منفی مطابقت داشته باشد (با آن خط) پذیرفته نمی شود، حتی اگر آن الگوی دیگری را در خط همسان سازد.

بیت، نماینده و مدول به طور مستقیم از کلید میزبان RSA گرفته می شود؛ آنها می توانند به عنوان مثال از /etc/ssh/ssh_host_key.pub بدست آورند. زمینه نظر اختیاری به انتهای خط ادامه می دهد و استفاده نمی شود.

خطوط شروع با # و خطوط خالی به عنوان نظرات نادیده گرفته می شوند.

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

توجه داشته باشید که خطوط در این فایل ها معمولا صدها کاراکتر طولانی هستند و قطعا نمی خواهید کلید های میزبان را با دست تایپ کنید. در عوض، آنها را با یک اسکریپت یا با استفاده از /etc/ssh/ssh_host_key.pub و اضافه کردن نام میزبان در جلو ایجاد کنید.

مثال ها

بستن، ...، 130.233.208.41 1024 37 159 ... 93 closenet.hut.fi cvs.openbsd.org، 199.185.137.3 ssh-rsa AAAA1234 ..... =

همچنین مشاهده کنید

sshp (1)، sftp (1)، ssh (1)، ssh-add1، ssh-agent1، ssh-keygen1، login.conf5، modules (5)، sshd_config5، sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "معماری پروتکل SSH" پیش نویس-ietf-secsh-architecture-12.txt ژانویه 2002 کار در مواد پیشرفته

M.Friedl N. Provos WA Simpson "گروه Diffie-Hellman Group برای پروتکل لایه حمل و نقل SSH" پیش نویس تدبیر - secsh-dh-group-exchange-02.txt ژانویه 2002 کار در مواد پیشرفته

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