Linux / Unix команда: sshd

Име

sshd - OpenSSH SSH демон

Синопсис

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

Опис

sshd (SSH Daemon) е програма за демон за ssh (1). Заедно овие програми го заменуваат rlogin и rsh , и да обезбеди безбедна шифрирана комуникација помеѓу двајца недоверливи домаќини во небезбедна мрежа. Програмите се наменети да бидат толку лесно да се инсталираат и да се користат што е можно повеќе.

sshd е демон кој ги слуша врските од клиентите. Обично се стартува при подигање од / etc / rc Тоа вилушка нов демон за секоја дојдовна врска. Демонизираните демони се справуваат со размена на клучеви, енкрипција, автентикација, извршување на команди и размена на податоци. Оваа имплементација на sshd поддржува и SSH протокол верзија 1 и 2 истовремено.

SSH Протокол Верзија 1

Секој домаќин поседува RSA клуч специфичен за домаќинот (обично 1024 бита) што се користи за идентификација на домаќинот. Дополнително, кога ќе почне даемонот, тој генерира серверски RSA клуч (нормално 768 бита). Овој клуч е нормално регенериран секој час, ако се користи и никогаш не е зачуван на дискот.

Секогаш кога некој клиент го поврзува демонот, одговара со своите јавни домаќински и серверски клучеви. Клиентот го споредува клучот на домаќинот RSA против сопствената база на податоци за да потврди дека не се променил. Клиентот потоа генерира 256-битен случаен број. Го шифрира овој случајен број користејќи го и клучот на домаќинот и клучот на серверот и го испраќа шифрираниот број на серверот. Двете страни потоа го користат овој случајен број како клуч за сесија кој се користи за шифрирање на сите понатамошни комуникации во сесијата. Остатокот од сесијата е заштитен со користење на конвенционална шифра, моментално Blowfish или 3DES, при што 3DES се користи стандардно. Клиентот го избира алгоритмот за шифрирање кој ќе го користи од оние понудени од серверот.

Потоа, серверот и клиентот влегуваат во дијалог за автентикација. Клиентот се обидува да се идентификува со користење на .rhosts автентикација, .rhosts автентикација во комбинација со RSA домаќин автентикација, RSA предизвик-одговор автентикација, или лозинка-базирани автентикација .

Идентификацијата на Rhosts е нормално оневозможена бидејќи е фундаментално несигурна, но може да биде овозможена во конфигурациската датотека на серверот ако сакате. Безбедноста на системот не е подобрена, освен ако rshd rlogind и rexecd се оневозможени (со тоа целосно го оневозможуваат rlogin и rsh во машината).

SSH протокол верзија 2

Верзијата 2 работи слично: Секој домаќин поседува клучен клуч за домаќин (RSA или DSA) кој се користи за идентификација на домаќинот. Меѓутоа, кога демонот започнува, тој не генерира клучен сервер. Безбедноста нанапред е обезбедена преку договорот за клуч на Diffie-Hellman. Овој клучен договор резултира со клучен клуч за сесија.

Остатокот од сесијата е шифрирана со помош на симетрична шифра, во моментов 128-битна AES, Blowfish, 3DES, CAST128, Arcfour, 192-битна AES или 256-битна AES. Клиентот го избира алгоритмот за шифрирање кој ќе го користи од оние понудени од серверот. Дополнително, интегритетот на сесијата се обезбедува преку код за проверка на криптографска порака (hmac-sha1 или hmac-md5).

Протоколот верзија 2 обезбедува метод за автентикација базиран на јавен клуч (PubkeyAuthentication) или клиент домаќин (HostbasedAuthentication), конвенционална проверка на лозинка и методи базирани на предизвик-одговор.

Извршување на команди и пренасочување на податоци

Ако клиентот успешно се автентицира, се внесува дијалог за подготовка на сесијата. Во овој момент, клиентот може да побара работи како распределба на псевдо-tty, пренасочување на X11 врски, проследување на TCP / IP конекции или пренасочување на врската со агентот за автентикација преку безбедниот канал.

Конечно, клиентот или бара школка или извршување на команда. Страните потоа влегуваат во режим на сесија. Во овој режим, секоја страна може да испраќа податоци во секое време, и таквите податоци се пренесуваат до / од школка или команда на страната на серверот, и корисничкиот терминал на страната на клиентот.

Кога корисничката програма ќе прекине и сите проследени X11 и други конекции ќе бидат затворени, серверот ќе му испрати статус на командниот излез на клиентот и двете страни ќе излезат.

sshd може да се конфигурира со опции на командната линија или со конфигурациска датотека. Опциите на командната линија ги преминуваат вредностите наведени во конфигурациската датотека.

sshd ја преиначува конфигурациската датотека кога прима сигнал за згаснување , SIGHUP со извршување со името што е започнато како, / usr / sbin / sshd

Опциите се како што следува:

битови

Го одредува бројот на битови во ефемерниот протокол на серверот за верзијата 1 (стандардно 768).

-d

Режим за грешка. Серверот испраќа изгубен излез за дебагирање во системскиот дневник и не се става во заднина. Серверот, исто така, нема да работи и само ќе процесира една врска. Оваа опција е наменета само за дебагирање за серверот. Повеќе-д опции го зголемуваат нивото на дебагирање. Максимум е 3.

Кога е одредена оваа опција, sshd ќе го испрати излезот на стандардна грешка наместо системскиот дневник.

-f configuration_file

Го наведува името на конфигурациската датотека. Стандардно е / etc / ssh / sshd_config sshd одбива да започне ако нема конфигурациска датотека.

-g login_grace_time

Дава благодатно време за клиентите да се идентификуваат себеси (стандардно 120 секунди). Ако клиентот не успее да го идентификува корисникот во текот на овие многу секунди, серверот се исклучува и излегува. Вредноста на нула не покажува граница.

-h host_key_file

Одредува датотека од која се чита клучот на домаќинот. Оваа опција мора да биде дадена ако sshd не се извршува како root (како нормални датотеки со клучеви за домаќинот вообичаено не можат да бидат читливи од никој освен root). Стандардно е / etc / ssh / ssh_host_key за протокол верзија 1, и / etc / ssh / ssh_host_rsa_key и / etc / ssh / ssh_host_dsa_key за протокол верзија 2. Можно е да имате повеќе клучни клучеви за различни протоколи и клуч алгоритми.

-i

Одредува дека sshd се стартува од inetd. sshd вообичаено не е стартуван од inetd затоа што треба да генерира клучен сервер пред да може да одговори на клиентот, а тоа може да потрае десетици секунди. Клиентите ќе треба да чекаат премногу долго ако клучот се регенерира секој пат. Сепак, со мали големини на клучеви (на пример, 512) со користење sshd од inetd може да биде изводливо.

-k key_gen_time

Одредува колку често се регенерира клучот на серверот за ефемерни протокол верзија 1 (стандардно 3600 секунди или еден час). Мотивот за регенерирање на клучот прилично често е дека клучот не е зачуван насекаде, и по околу еден час, станува невозможно да се врати клучот за декрипција на пресретнати комуникации, дури и ако машината е распукана или физички запленета. Вредноста на нула покажува дека клучот никогаш нема да се регенерира.

опција

Може да се користи за давање опции во формат што се користи во конфигурациската датотека. Ова е корисно за одредување на опции за кои нема посебна ознака за командната линија.

-p пристаниште

Ја одредува портата на која серверот ги слуша конекциите (стандардно 22). Дозволени се повеќе опции за порта. Портовите наведени во конфигурациската датотека се игнорираат кога е одредена порта за командната линија.

-q

Тивок режим. Ништо не е испратено до системскиот дневник. Нормално, најавите, автентикација и прекинување на секоја врска се најавени.

Тест на владата. Проверете ја само валидноста на конфигурациската датотека и разумноста на копчињата. Ова е корисно за сигурно ажурирање на sshd бидејќи опции за конфигурација може да се променат.

-u len

Оваа опција се користи за да ја одредите големината на полето во структурата на utmp која го содржи името на оддалечениот сервер. Ако името на домаќинот што е разрешено е подолго од len , ќе се користи децималната децималичка точка. Ова им овозможува на домаќините со многу долги имиња на домаќини кои го прелеваат ова поле за да се уште се уникатно идентификувани. Утврдување - u0 укажува дека само децималните децимални адреси треба да се стават во utmp датотеката. - u0 исто така се користи за да се спречи sshd да прави DNS-барања, освен ако механизмот за автентикација или конфигурацијата не го бара тоа. Механизмите за автентикација кои можат да бараат DNS вклучуваат RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication и со користење на опција од листата = шема-листа во клучна датотека. Опциите за конфигурација кои бараат DNS вклучуваат користење на USER @ HOST шаблон во AllowUsers или DenyUsers

Кога е одредена оваа опција, sshd нема да се оддели и не стане демон. Ова овозможува лесно следење на 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 ако постои, отпечатоци содржини и поднесоци (освен ако не се root).
  4. Промени да се кандидира со нормални кориснички привилегии.
  5. Поставува основно опкружување.
  6. Чита $ HOME / .ssh / средина ако постои и на корисниците им е дозволено да ја променат нивната околина. Погледнете ја опцијата PermitUserEnvironment во sshd_config5.
  7. Промени во домашниот директориум на корисникот.
  8. Ако $ HOME / .ssh / rc постои, го извршува; друго, ако / etc / ssh / sshrc постои, работи; инаку работи xauth. На `` rc '' датотеките се дадени X11 протокол за автентикација и колачиња во стандарден влез.
  9. Врши школка или команда на корисникот.

Формат на датотека Authorized_Keys

$ HOME / .ssh / authorized_keys е стандардната датотека која ги наведува јавните клучеви кои се дозволени за автентикација на RSA во протоколот верзија 1 и за автентикација на јавен клуч (PubkeyAuthentication) во протоколот верзија 2. AuthorizedKeysFile може да се користи за одредување на алтернативна датотека.

Секоја линија на датотеката содржи едно копче (празни линии и линии што почнуваат со `# 'се игнорираат како коментари). Секој RSA јавен клуч се состои од следниве полиња, разделени со празни места: опции, битови, експонент, модул, коментар. Секој јавен клуч од верзијата 2 се состои од: опции, keytype, base64 кодиран клуч, коментар. Опцијата поле е опција; неговото присуство се одредува со тоа дали линијата започнува со број или не (полето за опции никогаш не започнува со број). Полињата за битови, експонент, модул и коментар даваат RSA клуч за протокол верзија 1; полето за коментари не се користи за ништо (но може да биде погодно за корисникот да го идентификува клучот). За протокол верзија 2 клучот е `` ssh-dss '' или `` ssh-rsa ''

Забележете дека линиите во оваа датотека обично се долги неколку стотици бајти (поради големината на кодирањето на јавниот клуч). Не сакате да ги внесувате; наместо тоа, копирајте ја идентитет.pub id_dsa.pub или датотеката id_rsa.pub и уредувајте ја.

sshd наметнува минимална големина на RSA модул за протокол 1 и протокол 2 клучеви од 768 бита.

Опциите (ако се присутни) се состојат од спецификации за опциите кои се разделени со запирка. Не се дозволени простори, освен во двојни цитати. Поддржани се следниве спецификации на опција (забележете дека клучните опции се нечувствителни на случај):

од = шема-листа

Одредува дека во прилог на автентикација на јавен клуч, каноничкото име на оддалечениот компјутер мора да биде присутна во списокот на шаблони што се разделени со запирка (`* 'и`?' Служат како симболи). Листата исто така може да содржи обрасци кои се игнорирани со префиксирање со `! ' ; ако каноничкото име на домаќинот одговара на негаран образец, клучот не е прифатен. Целта на оваа опција е опционално да се зголеми безбедноста: автентикација на јавен клуч сам по себе не му верува на серверите за мрежа или имиња или нешто (но клучот); сепак, ако некој некако го краде клучот, клучот дозволува натрапникот да се логира од каде било во светот. Оваа дополнителна опција го отежнува користењето на украдениот клуч (серверите за имиња и / или рутерите треба да бидат компромитирани покрај само клучот).

команда = команда

Одредува дека командата се извршува секогаш кога овој клуч се користи за автентикација. Командата обезбедена од корисникот (ако има) се игнорира. Командата се извршува на PTY ако клиентот бара PTY; инаку се работи без tty. Ако е потребен 8-битен чист канал, не смее да се бара pty или треба да се специфицира не-pty. Во наредбата може да биде вклучен цитат со цитирање со обратна коса црта. Оваа опција може да биде корисна за ограничување на одредени јавни клучеви за изведување само на одредена операција. Пример може да биде клуч кој дозволува далечински бекап, но ништо друго. Забележете дека клиентот може да специфицира TCP / IP и / или X11 товар, освен ако тие се експлицитно забранети. Забележете дека оваа опција се однесува на извршување на школка, команда или потсистем.

средина = NAME = вредност

Одредува дека стрингот треба да биде додаден во околината кога се пријавувате со користење на овој клуч. Варијаблите за животна средина на овој начин ги отфрлаат другите стандардни вредности на околината. Дозволени се повеќе опции од овој тип. Обработката на животната средина е стандардно оневозможена и се контролира преку опцијата PermitUserEnvironment . Оваа опција автоматски е оневозможена ако е овозможено UseLogin .

не-port-forwarding

Забранува TCP / IP препраќање кога овој клуч се користи за автентикација. Сите барања за пренасочување од страна на клиентот ќе ја вратат грешката. Ова може да се користи, на пример, во врска со командната опција.

не-X11-товар

Забранува пренасочување на X11 кога овој клуч се користи за автентикација. Секоја X11 барања за напред од страна на клиентот ќе вратат грешка.

не-агент-товар

Забранува пренасочување на агентот за автентикација кога овој клуч се користи за автентикација.

не-pty

Ја спречува распределбата на TTY (барање за распределба на Pty нема да успее).

permissionopen = host: port

Ограничете ја локалната "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", дозволиопија = "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 и додавање на имињата на домаќините на предната страна.

Примери

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

Исто така види

scp (1), sftp (1), ssh (1), ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, модули (5), sshd_config5, sftp-server8

Т. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "Архитектура на протоколот SSH" нацрт-ietf-secsh-architecture-12.txt јануари 2002 година работи во тек материјал

М. Фридл Н. Провос Д.А. Симпсон "Размена на групата на Дифи-Хелман за протоколот за транспортниот слој на ССЗ " нацрт-ietf-secsh-dh-group-exchange-02.txt Јануари 2002 работи во тек материјал

Важно: Користете ја командата за човекот ( % man ) за да видите како се користи командата на вашиот компјутер.