Linux / UNIX komandasi: sshd

Ism

sshd - OpenSSH SSH xizmati

Sinopsis

sshd [- deiqtD46 ] [- b bit ] [- f config_file ] [- g login_grace_time ] [- h host_key_file ] [- k key_gen_time ] [- o variant ] [- p port ] [- u len ]

Ta'rif

sshd (SSH Daemon) ssh (1) dasturining dasturidir . Ushbu dasturlar bilan birgalikda rlogin o'zgaradi va rsh va ishonchli bo'lmagan tarmoq orqali ishonchli bo'lmagan ikki kompyuter o'rtasida xavfsiz shifrlangan aloqalarni ta'minlash. Dasturlar imkon qadar oson o'rnatish va foydalanish uchun mo'ljallangan.

sshd mijozlarning ulanishlari uchun tinglaydigan dasturdir. Odatda / etc / rc dan yuklashda boshlanadi. Har bir kiruvchi aloqa uchun yangi xizmat ko'rsatishni talab qiladi. Forkliftlar asosiy almashinuvni, shifrlashni, autentifikatsiya qilishni, buyruqni bajarishni va ma'lumotlar almashinuvini boshqaradi. Sshd -ning ushbu ilovasi SSH protokolining 1 va 2-chi versiyalarini bir vaqtning o'zida qo'llab-quvvatlaydi.

SSH bayonnomasi 1-versiyasi

Har bir hostda mezbonni identifikatsiya qilish uchun foydalaniladigan hostga xos RSA kaliti (odatda 1024 bit) mavjud. Bundan tashqari, dastur boshlanganda RSA-server (odatda 768 bit) serverini ishlab chiqaradi. Ushbu kalit odatda har kuni foydalanilsa, yangilanadi va diskda hech qachon saqlanmaydi.

Mijoz har doim xizmat ko'rsatuvchi serverni ulash bilan umumiy server va server kalitlari bilan javob beradi. Mijoz RSA asosiy kalitini o'z bazasiga mos kelmaydi va u o'zgarmaganligini tekshirish uchun. Mijoz keyinchalik 256-bitlik tasodifiy raqamni hosil qiladi. Bu tasodifiy sonni ikkala asosiy kalit va server kalitidan foydalanib shifrlaydi va serverga shifrlangan raqamni yuboradi. Ikkala tomon ham keyinchalik bu tasodifiy sonni sessiya ichidagi barcha boshqa aloqalarni shifrlash uchun ishlatiladigan seans kaliti sifatida ishlatadi. Sessiyaning qolgan qismi odatiy shifrlangan, hozirgi vaqtda Blowfish yoki 3DES yordamida shifrlangan, 3DES esa standart sifatida ishlatiladi. Mijoz server tomonidan taqdim etilganlardan foydalanish uchun shifrlash algoritmini tanlaydi.

Keyin server va mijoz autentifikatsiya oynasini kiritadi. Mijoz o'zini autentifikatsiya qilish orqali autentifikatsiya qilishga urinadi, RSA hosti autentifikatsiyasi, RSA sinovga qarshi javob berishni autentifikatsiya qilish yoki parolga asoslangan autentifikatsiya bilan birlashtirilgan .hostlarni autentifikatsiya qilish .

Rhosts autentifikatsiya odatda o'chirib qo'yilgan, chunki u asosan xavfli emas, lekin agar kerak bo'lsa server konfiguratsiya faylida yoqib qo'yilishi mumkin. Rshd rlogind va rexecd o'chirilgan bo'lsa, tizim xavfsizligi takomillashtirilmaydi (shu sababli rlogin va rsh mashinasini ichiga butunlay o'chirib qo'yishadi).

SSH bayonnomasi 2-versiyasi

Versiya 2 shunga o'xshash ishlarni amalga oshiradi: Har bir hostda xostni identifikatsiya qilish uchun foydalaniladigan asosiy kompyuter (RSA yoki DSA) mavjud. Ammo, dastur ishga tushganda, u server kaliti yaratmaydi. Oldinga xavfsizlik Diffie-Hellman kalit shartnomasi orqali taqdim etiladi. Ushbu kalit bitim umumiy seans kalitiga olib keladi.

Sessiyaning qolgan qismi nosimmetrik shifrlash, 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES yoki 256 bit AES yordamida shifrlangan. Mijoz server tomonidan taqdim etilganlardan foydalanish uchun shifrlash algoritmini tanlaydi. Bundan tashqari, sessiya yaxlitligi kriptografik xabarlar autentifikatsiya kodi (hmac-sha1 yoki hmac-md5) orqali ta'minlanadi.

Protokolning 2-chi versiyasi ommaviy kalitlarga asoslangan foydalanuvchi (PubkeyAuthentication) yoki mijozning hosti (HostbasedAuthentication) autentifikatsiya usuli, an'anaviy parolni autentifikatsiya qilish va sinovga asoslangan javob berish usullarini taqdim etadi.

Buyruqni bajarish va ma'lumotlarni uzatish

Mijoz o'zini muvaffaqiyatli tasdiqlasa, sessiyani tayyorlash uchun dialog oynasi kiritiladi. Hozirgi vaqtda mijoz, pseudo-tty taqsimlash, X11 ulanishlarini uzatish, TCP / IP ulanishlarini uzatish yoki autentifikatsiya vositachisi havolasini xavfsiz kanal orqali uzatish kabi narsalarni so'rashi mumkin.

Va nihoyat, dastur yoki buyruqni bajarilishini talab qiladi. Keyin tomonlar seans rejimiga kirishadi. Ushbu rejimda har ikki tomon ham ma'lumotlarni istagan vaqtda yuborishlari mumkin va bunday ma'lumotlar server tomonidagi qobiq yoki buyruqqa va mijoz tomonidagi foydalanuvchi terminaliga yuboriladi.

Foydalanuvchi dasturi tugashi bilan X11 va boshqa ulanishlar o'chirilgan bo'lsa, server buyruqni chiqish holatini mijozga yuboradi va har ikki tomon ham chiqadi.

sshd komandasi buyrug'i yoki konfiguratsiya fayli yordamida tuzilishi mumkin. Buyruq variantlari konfiguratsiya faylida ko'rsatilgan qiymatlarni bekor qiladi.

sshd , konfiguratsiya faylini qayta ishlovchi signalni olganida qayta ko'rib chiqadi, SIGHUPni o'zi boshlagan ism bilan bajaradi, ya'ni, / usr / sbin / sshd

Tanlovlar quyidagilar:

-b bitlar

Vaqtinchalik protokol versiyasi 1-server kaliti (standart 768) bit sonini bildiradi.

-d

Disk raskadrovka rejimi. Server aniq disk raskadrovka chiqishini tizim jurnaliga yuboradi va uni fon rejimiga qo'ymaydi. Server ham ishlamaydi va faqat bitta ulanishni amalga oshiradi. Ushbu parametr faqat server uchun disk raskadrovka uchun mo'ljallangan. Multiple -d variantlari disk raskadrovka darajasini oshiradi. Maksimal 3 ga teng.

-e

Ushbu parametr belgilansa, sshd tizim jurnalining o'rniga chiqishni standart xatoga yuboradi.

-f configuration_file

Konfiguratsiya fayli nomini bildiradi. Standart / etc / ssh / sshd_config sshd hech qanday konfiguratsiya fayli bo'lmasa boshlashdan bosh tortadi.

-g login_grace_time

Mijozlar o'zlarini autentifikatsiya qilish uchun vaqtni beradi (standart 120 soniya). Mijoz, foydalanuvchi bir necha soniya ichida autentifikatsiya qila olmasa, server uziladi va chiqadi. Nolinchi qiymat hech qanday chegarani bildirmaydi.

-h host_key_file

Asosiy kalit o'qiladigan faylni bildiradi. Ushbu parametr, agar sshd ildiz sifatida ishlamasa, berilishi kerak (odatiy xost-kalitlar odatda odatda hech kim tomonidan o'qilmaydi). Protokol versiyasi 1 uchun / etc / ssh / ssh_host_key va protokol versiyasi uchun / etc / ssh / ssh_host_rsa_key va / etc / ssh / ssh_host_dsa_key. Boshqa protokol versiyalari va host key uchun bir nechta asosiy kalit fayllari bo'lishi mumkin algoritmlar.

-i

Sshd ningetddan ishlayotganligini bildiradi. sshd odatda inetdda ishlamaydi, chunki mijozga javob berishdan oldin server kalitini yaratish kerak va bu o'n soniya vaqt olishi mumkin. Kalit har safar yangilangan bo'lsa, mijozlar juda uzoq kutish kerak. Biroq, inetd dan sshd yordamida kichik kalit o'lchamlari (masalan, 512) mavjud bo'lishi mumkin.

-k key_gen_time

Efemer protokol versiyasi 1-server kaliti qanchalik tez-tez yangilanilishini bildiradi (standart 3600 soniya yoki bir soat). Kalitni qayta tiklash uchun juda ko'p sabab - bu kalit biron-bir joyda saqlanmasligi va taxminan bir soatdan so'ng, agar mashinaning yorilishi yoki jismonan olib qo'yilsa ham, aloqani uzib tashlash uchun kalitni qayta tiklash mumkin bo'lmaydi. Nolinchi qiymat tugma hech qachon yangilanmaganligini ko'rsatadi.

-o variant

Variantlarni konfiguratsiya faylida ishlatiladigan formatda berish uchun foydalanish mumkin. Bu alohida buyruq qatori bayrog'i mavjud bo'lmagan variantlarni ko'rsatish uchun foydalidir.

-p porti

Server ulanishlarni tinglaydigan portni belgilaydi (standart 22). Bir nechta port parametrlariga ruxsat beriladi. Konfiguratsiya faylida ko'rsatilgan ulanish nuqtalari buyruq qatori porti ko'rsatilganda e'tiborsiz bo'ladi.

-q

Jim rejim. Tizim jurnaliga hech narsa yuborilmaydi. Odatda har bir ulanishning boshlanishi, autentifikatsiyasi va bekor qilinishi jurnalga yoziladi.

-t

Sinov holati. Faqat konfiguratsiya fayllarining haqiqiyligini tekshiring va tugmachalarning qobiliyatini tekshiring. Ushbu konfiguratsiya imkoniyatlari o'zgarishi mumkinligi sababli sshdni ishonchli tarzda yangilash uchun foydalidir.

-u len

Ushbu parametr uzoqdan host nomini saqlaydigan utmp tizimidagi maydon hajmini ko'rsatish uchun ishlatiladi. Agar qaror qilingan host nomi len dan uzun bo'lsa, nuqta o'nli qiymatdan foydalaniladi. Bu esa, ushbu maydonni hali ham aniq ravishda identifikatsiya qilishni ta'minlaydigan juda ko'p ota-kompyuter nomlari mavjud bo'lgan kompyuterlarga ruxsat beradi. Belgilab - u0 faqat utmp faylga nuqta o'nli manzillarni qo'yish kerakligini bildiradi. - u0 , autentifikatsiya qilish mexanizmi yoki konfiguratsiyasi talab qilmaguncha sshd ning DNS so'rovlarini bajarishining oldini olish uchun ham ishlatiladi. DNS-ni talab qilishi mumkin bo'lgan autentifikatsiya qilish mexanizmlari orasida RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication va kalit fayldan = naqsh list- ni ishlatish mumkin. DNS-ni talab qiladigan konfiguratsiya opsiyalari AllowUsers yoki DenyUsers- da USER @ HOST chizmasi yordamida ishlatilgan

-D

Ushbu parametr belgilansa, sshd ajratilmaydi va ishlamaydi. Bu sshd-ni oson kuzatish imkonini beradi

-4

Sshd faqat IPv4 manzillarini ishlatadi.

-6

Sshd faqat IPv6 manzillarini ishlatishi kerak.

Konfiguratsiya fayli

sshd , / etc / ssh / sshd_config (yoki buyruq satırındaki f bilan belgilangan fayl) konfigürasyon ma'lumotlarini o'qiydi. Fayl formati va konfiguratsiya imkoniyatlari sshd_config5 da tasvirlangan.

Kirish jarayoni

Agar foydalanuvchi muvaffaqiyatli tizimga kirsa , sshd quyidagilarni bajaradi:

  1. Agar kirish ttyda bo'lsa va hech qanday buyruq ko'rsatilmagan bo'lsa, oxirgi kirish vaqti va / etc / motd (konfiguratsiya faylida yoki $ HOME / .hushlogin tomonidan SX FILES qismiga qarang).
  2. Agar kirish tty da bo'lsa, kirish vaqtini qayd qiladi.
  3. Cheklar / etc / nologin mavjud bo'lsa, kontentni chop etadi va tugaydi (agar root bo'lmasa).
  4. Oddiy foydalanuvchi imtiyozlari bilan ishlaydigan o'zgarishlar.
  5. Asosiy muhitni o'rnatadi.
  6. Agar mavjud bo'lsa $ HOME / .ssh / environment faylini o'qiydi va foydalanuvchilar o'z muhitini o'zgartirishi mumkin. Sshd_config5 da PermitUserEnvironment parametrini ko'ring.
  7. Foydalanuvchining uy katalogidagi o'zgarishlar.
  8. Agar $ HOME / .ssh / rc mavjud bo'lsa, uni ishga tushiradi; else / etc / ssh / sshrc mavjud bo'lsa, ishlaydi; aks holda xauth ishlaydi. «Rc» fayllari standart kirishda X11 autentifikatsiya protokoli va cookie-fayllarga beriladi.
  9. Foydalanuvchi qobig'ini yoki buyrug'ini boshqaradi.

Authorized_Keys fayl formati

$ HOME / .ssh / authorized_keys protokol versiyasi 1da RSA autentifikatsiyasiga ruxsat etilgan umumiy kalitlarni ro'yxatga oladi va protokol versiyasi 2-versiyasida umumiy kalit autentifikatsiya qilish uchun (PubkeyAuthentication) ro'yxatdagi standart fayl. AuthorizedKeysFile muqobil faylni aniqlash uchun ishlatilishi mumkin.

Faylning har bir qatorida bitta kalit mavjud (bo'sh satr va "#" bilan boshlangan qatorlar sharhlar sifatida e'tiborsiz qoldiriladi). Har bir RSA umumiy kaliti bo'shliqlar bilan ajratilgan quyidagi maydonlardan iborat: variantlar, bitlar, eksponent, modul, sharh. Har bir protokol versiyasi 2 umumiy kalitidan iborat: variantlar, keytype, base64 shifrlangan kalit, sharh. Tanlovlar maydoni ixtiyoriy; uning mavjudligi chiziq raqam bilan boshlangan yoki yo'qligini aniqlaydi (variantlar maydoni hech qachon raqam bilan boshlanmaydi). Bits, exponent, modul va izoh joylari protokol versiyasi 1 uchun RSA kalitini beradi; o'tilganlik sanasi maydoni hech narsa uchun ishlatilmaydi (lekin foydalanuvchi kalitni aniqlash uchun qulay bo'lishi mumkin). Protokol versiyasi 2 uchun keytype "` ssh-dss '' yoki `` ssh-rsa ''

Shuni esda tutish kerakki, ushbu faylning satrlari odatda bir necha yuz bayt uzunlikda bo'ladi (ommaviy kalitlarni kodlash hajmi jihatidan). Ularni yozishni xohlamaysiz; Buning o'rniga identity.pub id_dsa.pub yoki id_rsa.pub faylini nusxa ko'chiring va tahrir qiling.

sshd protokol 1 uchun minimal RSA kalit modul hajmini va 768 bitlik 2 kalitli protokolni qo'llaydi.

Variantlar (agar mavjud bo'lsa) vergul bilan ajratilgan parametrlardan iborat. Er-xotin tirnoqlardan tashqari bo'sh joylarga ruxsat berilmaydi. Quyidagi parametrlar spetsifikatsiyalanadi (optsiya kalit so'zlari katta / kichik harflarga qaram emas).

= naqsh ro'yxatidan

Public kalit autentifikatsiyasiga qo'shimcha ravishda, uzoqdan boshqaruvchining kanonik nomi naqshlarning vergul bilan ajratilgan ro'yxatida bo'lishi kerakligini bildiradi ("*" va "?" Joker belgilar sifatida ishlatiladi). Ro'yxat, ularni `` `bilan oldindan belgilash orqali rad etilgan naqsh mavjud bo'lishi mumkin! ; Kanonik xost nomi noma'lum naqsh bilan mos keladigan bo'lsa, kalit qabul qilinmaydi. Ushbu tanlovning maqsadi ixtiyoriy ravishda xavfsizlikni oshirishdir: ommaviy kalit autentifikatsiyasining o'ziga o'zi tarmoq yoki ism-sharif serverlariga yoki biror narsaga ishonmaydi (kalit); Ammo, agar kimdir kalitni bir zumda o'g'irlasa, kaliti dunyoning istalgan burchagidan tizimga kirishga ruxsat beradi. Ushbu qo'shimcha variant o'g'irlangan kalitdan foydalanishni qiyinlashtiradi (nomlar serverlari va / yoki routerlarning faqat kalitga qo'shimcha ravishda xavfga solishlari kerak).

buyruq = buyruq

Bu tugma autentifikatsiya qilish uchun ishlatilganda buyruqlar bajarilishini bildiradi. Foydalanuvchi tomonidan berilgan buyruq (mavjud bo'lsa) e'tiborga olinmaydi. Buyruq bir pty-da ishga tushiriladi, agar mijoz pty so'rasa; aks holda tty holda ishlaydi. Agar 8-bitli toza kanal kerak bo'lsa, pty so'ramaslik kerak yoki no-pty belirtilmemelidir. Buyruqning teskarisi bilan tsivilizatsiyalash orqali uni taklif qilish mumkin. Ushbu parametr faqat muayyan operatsiyani bajarish uchun muayyan umumiy kalitlarni cheklashda foydali bo'lishi mumkin. Masalan, uzoqdan zaxiralashlarga ruxsat beruvchi kalit bo'lishi mumkin, ammo boshqa hech narsa. Mijoz ochiq-oydin ta'qiqlangan ekan, TCP / IP va / yoki X11 yo'nalishini ko'rsatishi mumkin. Ushbu parametr qobiq, buyruq yoki kichik tizimni bajarish uchun qo'llaniladi.

muhit = NAME = qiymat

Ushbu tugma yordamida tizimga kirish paytida simni atrofga qo'shilishi kerakligini bildiradi. Atrof-muhit o'zgaruvchilari shu tarzda boshqa standart atrof-muhit qiymatlarini bekor qiladi. Ushbu turdagi bir nechta variantlarga ruxsat beriladi. Atrof muhitni qayta ishlash funksiyasi o'chirib qo'yilgan va PermitUserEnvironment parametri orqali boshqariladi. UseLogin yoqilgan bo'lsa, ushbu parametr avtomatik ravishda o'chirib qo'yiladi .

no-port-jo'natmalari

Ushbu tugma autentifikatsiya qilish uchun foydalanilganda TCP / IP-xabarlarini taqiqlaydi. Mijoz tomonidan har qanday oldinga yo'naltiruvchi so'rovlar xatoni qaytaradi. Buni, masalan, buyruq opsiyasi bilan bog'liq holda foydalanish mumkin.

Yo'q-X11 yo'naltirish

Ushbu tugma autentifikatsiya qilish uchun foydalanilganda X11 yo'nalishiga ruxsat bermaydi. Mijoz tomonidan har qanday X11 oldinga yo'naltiruvchi so'rovlar xatolarni qaytaradi.

no-agent-yuborish

Autentifikatsiya qilish uchun ushbu tugma ishlatilganda autentifikatsiya vositasini yo'naltirishga ruxsat bermaydi.

no-pty

Tty taqsimlanishiga xalaqit beradi (pty ni ajratish so'rovi bajarilmaydi).

permopen = host: port

Mahalliy `` ssh-L '' portini ko'rsatib, u faqat belgilangan host va portga ulanishi mumkin. IPv6 manzillari muqobil sintaksisi bilan ko'rsatilishi mumkin: host / port Bir necha ruxsat beruvchi variantlar vergul bilan ajratilgan bo'lishi mumkin. Belgilangan hostname bo'yicha hech qanday naqsh taalukli bajarilmayapti, ular literal domenlar yoki manzillar bo'lishi kerak.

Misollar

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

dan = "*. niksula.hut.fi,! pc.niksula.hut.fi" 1024 35 23 ... 2334 ylo @ niksula

buyruqlar = "dump / home", no-pty, no-port-yo'naltirish 1024 33 23 ... 2323 backup.hut.fi

permopen = "10.2.1.55:80", permopen = "10.2.1.56:25" 1024 33 23 ... 2323

Ssh_Known_Hosts Fayl formati

/ Etc / ssh / ssh_known_hosts va $ HOME / .ssh / known_hosts fayllari barcha ma'lum hostlar uchun host umumiy kalitlarini o'z ichiga oladi. Global fayl administrator tomonidan tayyorlanishi kerak (ixtiyoriy) va foydalanuvchi o'zi faylni avtomatik ravishda saqlab turadi: foydalanuvchi noma'lum kompyuterdan bog'langan har bir foydalanuvchi o'zi faylga kalitni qo'shiladi.

Ushbu fayllardagi har bir satr quyidagi maydonlarni o'z ichiga oladi: hostname, bit, exponent, modul, comment. Maydonlar bo'shliqlar bilan ajralib turadi.

Hostname - bu naqshlarning vergul bilan ajratilgan ro'yxatidir ('*' va '?' Joker belgilar sifatida ishlatiladi); har bir naqsh o'z navbatida kanonik mezbon nomiga (mijozni autentifikatsiya qilishda) yoki foydalanuvchi tomonidan berilgan nomga (serverni tasdiqlashda) mos keladi. Bundan tashqari, "!" rad etishni ko'rsatish uchun: agar mezbon nomining negiz naqshga mos keladigan bo'lsa, hatto satrda yana bir naqsh bo'lsa ham qabul qilinmaydi (u qatorda).

Bits, exponent va modul to'g'ridan-to'g'ri RSA mezbonlik kalitidan olinadi; ular, masalan, /etc/ssh/ssh_host_key.pub dan olish mumkin. Majburiy emas sharhlar satri oxirigacha davom etadi va ishlatilmaydi.

'#' Va bo'sh satrlarni boshlab boshlagan satrlarni sharhlar sifatida e'tiborsiz qoldiriladi.

Xost identifikatsiya šilishni amalga oshirayotganda, identifikatsiya šilingan satr mos kalitga ega bœlganda autentifikatsiya šilinadi Shunday nomlar uchun bir nechta satr yoki turli xil asosiy kalitlarga ega bo'lishi mumkin (lekin tavsiya etilmaydi). Bu, muayyan holatda, faylga turli domenlardan mezbon nomlarning qisqa shakllari qo'yilganda yuzaga keladi. Fayllarda qarama-qarshi ma'lumotlar mavjud bo'lishi mumkin; Agar haqiqiy ma'lumot ikkala faylda ham mavjud bo'lsa, autentifikatsiya qilinadi.

Ushbu fayllardagi chiziqlar odatda yuzlab belgi uzunligiga e'tibor bering va siz uy egasi kalitlarini qo'l bilan yozishni xohlamaysiz. Buning o'rniga, ularni skript yordamida yaratish yoki /etc/ssh/ssh_host_key.pub yozish va oldingi mezbon nomlarini qo'shish.

Misollar

closenet, ..., 130.233.208.41 1024 37 159 ... 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ..... =

Shuningdek qarang

scp (1), sftp (1), ssh (1), ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, modul (5), sshd_config5, sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "SSH bayonnomasi me'morchiligi" loyihasi loyihasi 2002 y.

M. Friedl N. Provos WA Simpson "SSH transport qatlamlari protokoli uchun Diffie-Hellman guruhi almashinuvi" draft-ietf-secsh-dh-group-exchange-02.txt Yanvar 2002

Muhim: shaxsiy kompyuteringizda buyruq qanday ishlatilishini ko'rish uchun man buyrug'ini ( % man ) ishlating.