Linux / Unix Command: sshd

Pangalan

sshd - OpenSSH SSH na daemon

Buod

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

Paglalarawan

sshd (SSH Daemon) ay ang program ng daemon para sa ssh (1). Sama-sama pinapalitan ng mga programang ito ang rlogin at rsh , at nagbibigay ng ligtas na naka-encrypt na mga komunikasyon sa pagitan ng dalawang hindi pinagkakatiwalaang host sa isang hindi secure na network. Ang mga programa ay inilaan upang maging madaling i-install at gamitin hangga't maaari.

sshd ang daemon na nakikinig para sa mga koneksyon mula sa mga kliyente. Ito ay karaniwang nagsimula sa boot mula sa / etc / rc Ito ay nagtatanggal ng bagong daemon para sa bawat papasok na koneksyon. Ang mga naka-forked na daemon ay may hawak na key exchange, encryption, authentication, pagpapatupad ng command, at pagpapalit ng data. Ang pagpapatupad ng sshd ay sumusuporta sa parehong SSH protocol bersyon 1 at 2 nang sabay-sabay.

SSH Protocol Version 1

Ang bawat host ay may isang RSA key na tukoy sa host (karaniwang 1024 bits) na ginamit upang makilala ang host. Bukod pa rito, kapag nagsisimula ang daemon, bumubuo ito ng isang RSA key ng server (karaniwang 768 bits). Ang susi na ito ay normal na muling binubuksan bawat oras kung ito ay ginagamit, at hindi naka-imbak sa disk.

Tuwing nagkokonekta ang isang kliyente ang tumugon sa demonyo kasama ang mga pampublikong host at mga key ng server. Inihahambing ng kliyente ang susi ng host RSA laban sa sarili nitong database upang i-verify na hindi ito nagbago. Ang kliyente ay pagkatapos ay bumubuo ng isang 256-bit na random na numero. Ini-encrypt ang random na numero na ito gamit ang parehong host key at ang server key at ipinapadala ang naka-encrypt na numero sa server. Ang parehong panig pagkatapos ay gamitin ang random na bilang bilang isang susi session na ginagamit upang i-encrypt ang lahat ng karagdagang mga komunikasyon sa session. Ang natitirang bahagi ng session ay naka-encrypt gamit ang isang maginoo cipher, kasalukuyang Blowfish o 3DES, na may 3DES ginagamit bilang default. Pinipili ng kliyente ang algorithm ng pag-encrypt na gagamitin mula sa mga ibinibigay ng server.

Susunod, ang server at ang client ay nagpapasok ng dialog ng pagpapatunay. Sinusubukan ng kliyente na mapatotohanan ang sarili nito gamit ang authentication ng .rhosts, .rhosts authentication na sinamahan ng RSA host authentication, RSA hamon-tugon na pagpapatunay, o pagpapatunay na nakabatay sa password .

Karaniwang hindi pinagana ang pagpapatotoo ng Rhosts dahil sa panimula ito ay walang katiyakan, ngunit maaaring paganahin sa configuration file ng server kung nais. Ang sistema ng seguridad ay hindi napabuti maliban kung ang rshd rlogind at rexecd ay hindi pinagana (kaya ganap na hindi pagpapagana rlogin at rsh sa makina).

SSH Protocol Version 2

Gumagana ang Bersyon 2: Ang bawat host ay mayroong isang host-specific key (RSA o DSA) na ginagamit upang makilala ang host. Gayunpaman, kapag nagsisimula ang daemon, hindi ito bumuo ng isang susi ng server. Ang pagpasok ng seguridad ay ibinibigay sa pamamagitan ng kasunduan ng Diffie-Hellman. Ang mga pangunahing kasunduang ito ay nagreresulta sa isang shared session key.

Ang natitirang bahagi ng session ay naka-encrypt gamit ang isang symmetric cipher, kasalukuyang 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES, o 256 bit AES. Pinipili ng kliyente ang algorithm ng pag-encrypt na gagamitin mula sa mga ibinibigay ng server. Bukod pa rito, ang integridad ng session ay ibinibigay sa pamamagitan ng isang cryptographic message authentication code (hmac-sha1 o hmac-md5).

Ang Protocol version 2 ay nagbibigay ng pampublikong susi batay sa gumagamit (PubkeyAuthentication) o client host (HostbasedAuthentication) na paraan ng pagpapatunay, maginoo na pagpapatunay ng password, at hamon-tugon batay pamamaraan.

Command Execution and Data Forwarding

Kung matagumpay ang pagpapatunay ng kliyente mismo, isang dialog para sa paghahanda ng session ay ipinasok. Sa oras na ito ang client ay maaaring humiling ng mga bagay tulad ng paglalaan ng isang pseudo-tty, paglilipat ng mga koneksyon sa X11, pagpapasa ng mga koneksyon sa TCP / IP, o pag-forward ng koneksyon ng pagpapatunay ng ahente sa secure na channel.

Sa wakas, ang kliente ay humihingi ng isang shell o pagpapatupad ng isang utos. Ang mga gilid pagkatapos ay ipasok ang session mode. Sa mode na ito, ang alinman sa bahagi ay maaaring magpadala ng data sa anumang oras, at ang naturang data ay ipapasa sa / mula sa shell o command sa gilid ng server, at ang terminal ng gumagamit sa gilid ng client.

Kapag tinapos ang programa ng user at ang lahat ng naipasa na X11 at iba pang mga koneksyon ay isinara, ang server ay nagpapadala ng command exit status sa client at magkabilang panig na lumabas.

Maaaring i-configure ang sshd gamit ang mga pagpipilian sa command-line o isang configuration file. Ang mga opsyon ng command-line ay pinapalitan ang mga halagang tinukoy sa configuration file.

sshd rereads nito configuration file kapag ito ay tumatanggap ng isang hangup signal, SIGHUP sa pamamagitan ng pagsasagawa mismo ng pangalan na ito ay nagsimula bilang, ibig sabihin, / usr / sbin / sshd

Ang mga pagpipilian ay ang mga sumusunod:

-b bits

Tinutukoy ang bilang ng mga bits sa ephemeral protocol version 1 server key (default 768).

-d

Debug mode. Nagpapadala ang server ng verbose debug output sa log ng system at hindi inilalagay mismo sa background. Hindi rin gagana ang server at magpoproseso lamang ng isang koneksyon. Ang pagpipiliang ito ay inilaan lamang para sa debugging para sa server. Ang mga pagpipilian sa maramihang -d ay nagdaragdag sa antas ng pag-debug. Ang pinakamataas ay 3.

-e

Kapag tinukoy ang opsyong ito, ipapadala ng sshd ang output sa karaniwang error sa halip ng log ng system.

-f configuration_file

Tinutukoy ang pangalan ng configuration file. Ang default ay / etc / ssh / sshd_config sshd ay tumangging magsimula kung walang configuration file.

-g login_grace_time

Nagbibigay ng oras ng biyaya para sa mga kliyente na patotohanan ang kanilang mga sarili (default na 120 segundo). Kung ang kliyente ay hindi nagpapatunay sa gumagamit sa loob ng maraming segundo, ang server ay nag-disconnects, at lumabas. Ang isang halaga ng zero ay nagpapahiwatig ng walang limitasyon.

-h host_key_file

Tinutukoy ang isang file kung saan binabasa ang isang key ng host. Ang opsyong ito ay dapat ibigay kung ang sshd ay hindi tumatakbo bilang ugat (tulad ng karaniwang mga host key file ay karaniwang hindi nababasa ng sinuman ngunit ugat). Ang default ay / etc / ssh / ssh_host_key para sa protocol na bersyon 1, at / etc / ssh / ssh_host_rsa_key at / etc / ssh / ssh_host_dsa_key para sa protocol na bersyon 2. Posible na magkaroon ng maraming host key file para sa iba't ibang mga bersyon ng protocol at host key mga algorithm.

-i

Tinutukoy na ang sshd ay pinapatakbo mula sa inetd. sshd ay karaniwang hindi tumatakbo mula sa inetd dahil kailangan nito upang makabuo ng server key bago ito tumugon sa client, at maaaring tumagal ito ng sampu-sampung segundo. Ang mga kliyente ay kailangang maghintay ng masyadong mahaba kung ang susi ay regenerated sa bawat oras. Gayunpaman, na may maliit na laki ng key (hal., 512) gamit ang sshd mula sa inetd ay maaaring magagawa.

-k key_gen_time

Tinutukoy kung gaano kadalas ang regenerated na bersyon ng ephemeral protocol version 1 server (default na 3600 segundo, o isang oras). Ang pagganyak para sa muling pagbubukas ng susi ay medyo madalas na ang susi ay hindi naka-imbak kahit saan, at pagkatapos ng halos isang oras, magiging imposible na mabawi ang susi para sa pag-decrypting na naharang sa komunikasyon kahit na ang makina ay basag o pisikal na kinuha. Ang isang halaga ng zero ay nagpapahiwatig na ang susi ay hindi kailanman muling bubuhayin.

-o opsyon

Maaaring gamitin upang magbigay ng mga pagpipilian sa format na ginamit sa configuration file. Ito ay kapaki-pakinabang para sa pagtukoy ng mga pagpipilian kung saan walang hiwalay na bandila ng command line.

-p port

Tinutukoy ang port kung saan nakikinig ang server para sa mga koneksyon (default 22). Pinapayagan ang maraming pagpipilian ng port. Ang mga port na tinukoy sa file ng pagsasaayos ay binabalewala kapag tinukoy ang port ng command-line.

-q

Tahimik na mode. Walang ipinadala sa log ng system. Karaniwan ang simula, pagpapatunay, at pagwawakas ng bawat koneksyon ay naka-log.

-t

Test mode. Suriin lamang ang bisa ng configuration file at katinuan ng mga susi. Ito ay kapaki-pakinabang para sa pag-update ng sshd mapagkakatiwalaan na maaaring magbago ang mga opsyon sa pagsasaayos.

-u len

Ang pagpipiliang ito ay ginagamit upang tukuyin ang sukat ng patlang sa utmp na istraktura na hawak ang remote host name. Kung ang nalutas na pangalan ng host ay mas mahaba kaysa sa len ang dotted decimal value ay gagamitin sa halip. Pinapayagan nito ang mga host na may napakatagal na mga pangalan ng host na umaapaw sa patlang na ito upang maging natatanging natukoy. Ang pagtukoy - u0 ay nagpapahiwatig na ang mga tuldok na decimal na mga titik lamang ang dapat ilagay sa utmp file. - u0 ay gagamitin din upang maiwasan ang sshd mula sa paggawa ng mga kahilingan ng DNS maliban kung nangangailangan ito ng mekanismong pagpapatotoo o pagsasaayos. Ang mga mekanismo ng pagpapatotoo na maaaring nangangailangan ng DNS ay kinabibilangan ng RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication at gamit ang isang mula sa = pagpipilian sa pattern-list sa isang pangunahing file. Isama ang mga pagpipilian sa configuration na nangangailangan ng DNS gamit ang isang pattern ng USER @ HOST sa AllowUsers o DenyUsers

-D

Kapag tinukoy ang opsyong ito, ang sshd ay hindi mawawala at hindi maging isang demonyo. Pinapayagan nito ang madaling pagsubaybay ng sshd

-4

Mga pwersa ng sshd upang magamit lamang ang mga IPv4 address.

-6

Puwersa ng sshd upang magamit lamang ang IPv6 address.

Configuration File

binabasa ng sshd ang data ng pagsasaayos mula sa / etc / ssh / sshd_config (o ang tinukoy na file na - f sa command line). Ang mga format ng file at mga pagpipilian sa pagsasaayos ay inilarawan sa sshd_config5.

Proseso ng Pag-login

Kapag ang isang user ay matagumpay na nag-log in, ang sshd ay ang sumusunod:

  1. Kung ang login ay nasa isang tty, at walang tinukoy na utos, nag-print ng huling oras ng pag-login at / etc / motd (maliban kung mapigilan sa configuration file o sa pamamagitan ng $ HOME / .hushlogin tingnan ang seksyon ng Sx FILES).
  2. Kung ang pag-login ay nasa isang tty, ang mga oras ng pag-login ng mga tala.
  3. Mga tseke / etc / nologin kung umiiral ito, nag-i-print ng nilalaman at umalis (maliban sa ugat).
  4. Pagbabago upang tumakbo sa normal na mga pribilehiyo ng gumagamit.
  5. Nagtatakda ng pangunahing kapaligiran.
  6. Binabasa ang $ HOME / .ssh / kapaligiran kung umiiral ito at pinahihintulutan ang mga user na baguhin ang kanilang kapaligiran. Tingnan ang pagpipiliang PermitUserEnvironment sa sshd_config5.
  7. Pagbabago sa home directory ng user.
  8. Kung mayroong $ HOME / .ssh / rc, tumatakbo ito; iba pa kung umiiral ang / etc / ssh / sshrc, tumatakbo ito; kung hindi ay tumatakbo xauth. Ang mga `` rc '' na mga file ay binibigyan ng X11 na authentication protocol at cookie sa karaniwang input.
  9. Nagpapatakbo ng shell ng user o command.

Format ng File ng Awtorisadong_Keys

Ang $ HOME / .ssh / authorized_keys ay ang default na file na naglilista ng mga pampublikong key na pinahihintulutan para sa authentication ng RSA sa protocol na bersyon 1 at para sa pagpapatotoo ng pampublikong susi (PubkeyAuthentication) sa bersyon ng protocol 2. Ang AuthorizedKeysFile ay maaaring gamitin upang tukuyin ang isang alternatibong file.

Ang bawat linya ng file ay naglalaman ng isang key (walang laman na mga linya at linya na nagsisimula sa isang `# 'ay binabalewala bilang mga komento). Ang bawat pampublikong key ng RSA ay binubuo ng mga sumusunod na larangan, na pinaghihiwalay ng mga puwang: mga pagpipilian, mga bits, exponent, modulus, komento. Ang bawat protocol na pampublikong susi 2 ay binubuo ng: mga opsyon, keytype, base64 na naka-encode na key, magkomento. Ang opsyon na patlang ay opsyonal; ang presensya nito ay natutukoy kung ang linya ay nagsisimula sa isang numero o hindi (ang mga patlang ng mga pagpipilian ay hindi nagsisimula sa isang numero). Binibigyan ng mga bits, exponent, modulus at mga patlang ng komento ang key RSA para sa protocol na bersyon 1; ang field ng komento ay hindi ginagamit para sa anumang bagay (ngunit maaaring maging madali para sa user na kilalanin ang susi). Para sa protocol na bersyon 2 ang keytype ay `` ssh-dss '' o `` ssh-rsa ''

Tandaan na ang mga linya sa file na ito ay karaniwang may ilang daang byte ang haba (dahil sa laki ng pampublikong key encoding). Hindi mo nais na i-type ang mga ito; sa halip, kopyahin ang identity.pub id_dsa.pub o ang id_rsa.pub file at i-edit ito.

Ipinapatupad ng sshd ang isang minimum na laki ng modulus ng RSA para sa protocol 1 at protocol 2 keys ng 768 bits.

Ang mga opsyon (kung kasalukuyan) ay binubuo ng mga pagtutukoy ng pagpipilian na pinaghihiwalay ng kuwit. Walang puwang ang pinahihintulutan, maliban sa mga double quotes. Ang mga sumusunod na pagtutukoy sa opsyon ay suportado (tandaan na ang mga keyword na pagpipilian ay hindi nakakapinsala sa kaso):

mula sa = pattern-list

Tinutukoy na bilang karagdagan sa pagpapatotoo ng pampublikong key, ang canonical na pangalan ng remote na host ay dapat naroroon sa listahan ng mga pattern na pinaghihiwalay ng kuwit (`* 'at`?' Maglingkod bilang mga wildcard). Ang listahan ay maaari ring maglaman ng mga pattern na negated sa pamamagitan ng prefixing ito sa `! ' ; kung ang kanonikal na pangalan ng host ay tumutugma sa isang negatibong pattern, ang susi ay hindi tinatanggap. Ang layunin ng pagpipiliang ito ay ang opsyonal na pagtaas ng seguridad: ang pagpapatotoo ng pampublikong susi ay hindi pinagkakatiwalaan ng network o mga server ng pangalan o anumang bagay (ngunit ang susi); gayunpaman, kung ang isang tao sa paanuman ay magnanakaw ng susi, pinapayagan ng susi ang isang nanghihimasok na mag-log in mula sa kahit saan sa mundo. Ang karagdagang pagpipiliang ito ay ginagawang mas mahirap ang paggamit ng ninakaw na susi (ang mga server ng pangalan at / o mga router ay dapat na ikompromiso bilang karagdagan sa susi lamang).

command = command

Tinutukoy na ang command ay papatayin kapag ang key na ito ay ginagamit para sa pagpapatunay. Ang utos na ibinigay ng gumagamit (kung mayroon man) ay hindi pinansin. Ang command ay tumatakbo sa isang pty kung ang client ay humiling ng isang pty; kung hindi, ito ay tatakbo nang walang tty. Kung ang isang 8-bit na malinis na channel ay kinakailangan, ang isa ay hindi dapat humiling ng isang pty o dapat tukuyin ang no-pty Isang quote ay maaring isama sa command sa pamamagitan ng pag-quote sa isang backslash. Maaaring kapaki-pakinabang ang pagpipiliang ito upang paghigpitan ang ilang mga pampublikong key upang magawa lamang ang isang partikular na operasyon. Ang isang halimbawa ay maaaring isang susi na pinapahintulutan ang mga remote na backup ngunit walang iba. Tandaan na maaaring tukuyin ng kliyente ang pagpapasa ng TCP / IP at / o X11 maliban kung tahasang ipinagbabawal ang mga ito. Tandaan na ang pagpipiliang ito ay naaangkop sa shell, command o subsystem execution.

kapaligiran = NAME = halaga

Tinutukoy na ang string ay idaragdag sa kapaligiran kapag nag-log in gamit ang key na ito. Ang mga variable ng kapaligiran ay nagtakda sa ganitong paraan na pawalang-bisa ang iba pang mga halaga ng default na kapaligiran. Pinapayagan ang maraming pagpipilian ng ganitong uri. Ang pagpoproseso ng kapaligiran ay hindi pinagana sa pamamagitan ng default at kinokontrol sa pamamagitan ng opsyon na PermitUserEnvironment . Awtomatikong pinagana ang pagpipiliang ito kung pinagana ang UseLogin .

no-port-forwarding

Ipinagbabawal ang paglilipat ng TCP / IP kapag ang susi na ito ay ginagamit para sa pagpapatunay. Anumang port forward request ng client ay magbabalik ng isang error. Maaaring gamitin ito, halimbawa, may kaugnayan sa opsyon ng command .

walang-X11-pagpapasa

Ipagbabawal ang pag-forward ng X11 kapag ginagamit ang key na ito para sa pagpapatunay. Anumang X11 forward request ng client ay magbabalik ng isang error.

no-agent-forwarding

Ipinagbabawal ang pagpapasa ng ahente ng pagpapatunay kapag ang susi na ito ay ginagamit para sa pagpapatunay.

no-pty

Pinipigilan ang paglalaan ng tty (isang kahilingan na maglaan ng isang pty ay mabibigo).

permitopen = host: port

Limitahan ang pag-forward ng port ng `` ssh -L '' na kaya na maaari lamang itong kumonekta sa tinukoy na host at port. Maaaring matukoy ang IPv6 address sa isang alternatibong syntax: host / port Maraming mga permitopen na opsyon ay maaaring mailapat na pinaghihiwalay ng mga kuwit. Walang pagtutugma ng pattern ang ginagawa sa tinukoy na mga hostname, dapat itong maging literal na mga domain o address.

Mga halimbawa

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

mula = "*. 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

Format ng File ng Ssh_Known_Hosts

Ang / etc / ssh / ssh_known_hosts at $ HOME / .ssh / known_hosts na mga file ay naglalaman ng mga pampublikong key ng host para sa lahat ng mga kilalang host. Ang pandaigdigang file ay dapat na inihanda ng administrator (opsyonal), at ang bawat file ng user ay awtomatikong pinananatili: tuwing ang user ay kumokonekta mula sa isang hindi kilalang host ang key nito ay idinagdag sa per-user na file.

Ang bawat linya sa mga file na ito ay naglalaman ng mga sumusunod na larangan: mga hostname, bits, exponent, modulus, komento. Ang mga patlang ay pinaghihiwalay ng mga puwang.

Ang mga hostname ay isang listahan ng mga pattern na pinaghihiwalay ng kuwit ('*' at '?' Kumilos bilang mga wildcard); Ang bawat pattern, sa turn, ay naitugma laban sa kanonikal na pangalan ng host (kapag nagpapatunay sa isang kliyente) o laban sa pangalan na ibinigay ng user (kapag nagpapatunay sa isang server). Ang isang pattern ay maaari ring mauna sa `! ' upang ipahiwatig ang negasyon: kung ang pangalan ng host ay tumutugma sa isang negatibong pattern, ito ay hindi tinatanggap (sa pamamagitan ng linyang iyon) kahit na ito ay tumutugma sa isa pang pattern sa linya.

Ang mga bit, exponent, at modulus ay direktang nakuha mula sa host key RSA; maaari silang makuha, halimbawa, mula sa /etc/ssh/ssh_host_key.pub Ang opsyonal na field ng komento ay patuloy hanggang sa dulo ng linya, at hindi ginagamit.

Ang mga linya na nagsisimula sa `# 'at walang laman na mga linya ay binabalewala bilang mga komento.

Kapag gumaganap ng authentication ng host, tinatanggap ang pagpapatunay kung ang anumang pagtutugma ng linya ay may tamang susi. Kaya ito ay pinapayagan (ngunit hindi inirerekomenda) na magkaroon ng ilang mga linya o iba't ibang mga host key para sa parehong mga pangalan. Ito ay hindi maaaring hindi mangyayari kapag ang mga maikling porma ng mga pangalan ng host mula sa iba't ibang mga domain ay inilalagay sa file. Posible na ang mga file ay naglalaman ng magkakasalungat na impormasyon; tinatanggap ang authentication kung ang balidong impormasyon ay matatagpuan mula sa alinman sa file.

Tandaan na ang mga linya sa mga file na ito ay karaniwang daan-daang mga character na mahaba, at tiyak na ayaw mong i-type ang mga host key sa pamamagitan ng kamay. Sa halip, bumuo ng mga ito sa pamamagitan ng isang script o sa pamamagitan ng pagkuha /etc/ssh/ssh_host_key.pub at pagdaragdag ng mga pangalan ng host sa harap.

Mga halimbawa

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

Tingnan din

ssh-1, ssh-agent1, ssh-keygen1, login.conf5, moduli (5), sshd_config5, sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "SSH Protocol Architecture" draft-ietf-secsh-architecture-12.txt January 2002 work in progress material

M. Friedl N. Provos WA Simpson "Diffie-Hellman Group Exchange para sa SSH Transport Layer Protocol" draft-ietf-secsh-dh-group-exchange-02.txt January 2002 work in progress material

Mahalaga: Gamitin ang command ng tao ( % man ) upang makita kung paano ginagamit ang isang utos sa iyong partikular na computer.