Mazās triki SSH

Šajā rakstā apkopoti mūsu labākie paņēmieni efektīvākai SSH izmantošanai. No tā jūs uzzināsiet, kā:

  • Pievienot otro faktoru SSH pieslēgšanās procesam
  • Droši lietot agent forwarding
  • Iziet no iesaldētas SSH sesijas
  • Saglabāt pastāvīgu terminālu atvērtu
  • Koplietot attālo termināla sesiju ar draugu (bez Zoom!)

Otrā faktora pievienošana savam SSH

Otrā autentifikācijas faktora pievienošanai saviem SSH savienojumiem ir pieci dažādi veidi:

  1. Atjaunināt savu OpenSSH un izmantot šifrēšanas atslēgu. 2020. gada februārī OpenSSH tika pievienota FIDO U2F (Universālais otrais faktors) šifrēšanas atslēgu atbalsts. Tā ir lieliska jauna funkcija, bet ir nianses: tikai tie klienti un serveri, kuri ir atjaunināti uz OpenSSH 8.2 un augstāk, varēs izmantot šifrēšanas atslēgas, jo februāra atjauninājums ievieš jaunus atslēgu tipus. Komanda ssh –V ļauj pārbaudīt SSH klienta versiju, bet servera versiju – komandai nc [servername] 22

    Februāra versijā tika pievienoti divi jauni atslēgu tipi – ecdsa-sk un ed25519-sk (kopā ar atbilstošajiem sertifikātiem). Lai izveidotu atslēgas failu, pietiek ievietot savu šifrēšanas atslēgu un palaist komandu:
    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    T tā izveidos publiskos un privātos atslēgas un sasaistīs tos ar jūsu U2F ierīci. Privātās atslēgas uzdevums U2F ierīcē ir atšifrēt atslēgas noslēpumu diskā aktivizētas šifrēšanas atslēgas gadījumā.

    Turklāt kā otro faktoru jūs varat sniegt kodu savām atslēgām.

    Resident atslēga ir vēl viens atbalstīts OpenSSH -sk atslēgu ģenerēšanas veids. Šādā pieejā atslēgas noslēpums tiek glabāts U2F ierīcē un ļauj jums to iegūt ar šifrēšanas atslēgu, kad tas nepieciešams. Resident atslēgu var izveidot ar komandu:

    $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk

    Pēc tam, lai atgrieztu noslēpumu atmiņā jaunajā ierīcē, ievietojiet šifrēšanas atslēgu un palaidiet komandu:

    $ ssh-add -K

    Pieslēdzoties hostam, jums joprojām būs jāaktivizē šifrēšanas atslēga.

  2. Izmantot PIV+PKCS11 un Yubikey. Lai pieslēgtos ierīcēm ar agrākām SSHD versijām, izmantojot šifrēšanas atslēgu, nepieciešama cita pieeja. Yubico ir ceļvedis U2F+SSH izmantošanai ar PIV/PKCS11 (angļu valodā). Tas nav tas pats, kas FIDO U2F, un, lai gan metode darbojas, ir jāiegulda daudz pūļu, lai saprastu, kāda maģija tai stāv aiz muguras.
  3. Izmantot personalizētu yubikey-agent ssh aģentu. Filippo Valsorda izstrādāja SSH aģentu Yubikeys. Tas ir pilnīgi jaunums un ietver minimālu funkcionalitāti.
  4. Izmantot Touch ID un sekey. Sekey ir atvērtā koda SSH aģents, kas uzglabā slepenos atslēgas aizsargātā Mac enkla un ļauj izmantot Touch ID piekļuves funkcijai.
  5. Izmantot Single Sign On SSH. Es uzrakstīju ceļvedi, lai palīdzētu iestatīt šo metodi (angļu valodā). Viens no single sign on SSH priekšrocībām ir iespēja izmantot jūsu identifikatora pakalpojumu sniedzēja drošības politikās — tostarp atbalstu vairāku faktoru autentifikācijai (MFA).

Droša agent forwarding izmantošana

SHH agent forwarding ļauj attālinātajam mezglam piekļūt jūsu lokālā ierīcē esošajam SSH aģentam. Kad jūs izmantojat SSH ar ieslēgtu agent forwarding (parasti izmantojot ssh -A), savienojumā būs divi kanāli: jūsu interaktīvā sesija un kanāls agent forwarding. Caur šo kanālu Unix-iekārtu, ko izveidojis jūsu lokālais SSH aģents, savienojas ar attālināto mezglu. Tas ir riskants veids, jo lietotājs ar root piekļuvi attālinātajā ierīcē var piekļūt jūsu lokālajam SSH aģentam un potenciāli izdot sevi tīklā vietā jums. Izmantojot standarta SSH aģentu no Open SSH komplekta, jūs pat nezināsiet, ka tas noticis. U2F atslēgas (vai Sekey) klātbūtne palīdzēs efektīvi bloķēt jebkādas mēģinājuma piekļuves jūsu SSH aģentam no ārpuses.

Pat ar šādām piesardzības darbībām būs labi, ja cik vien iespējams reti izmantosiet agent forwarding. Nevajag to izmantot katrā sesijā — izmantojiet agent forwarding tikai tad, kad esat pārliecināts par tā nepieciešamību konkrētajā sesijā.

Iziet no iestrēgušas sesijas

Tīklošanas pārtraukums, neuzmanīga programmu uzvedība vai kontrolējošā secība, kas bloķē tastatūras ievadi — tās visas ir iespējamās SSH sesijas pārtraukšanas cēloņi.

Iestrēgušu sesiju var pabeigt vairākiem veidiem:

  1. Automātiski iziet, pārtraucot tīklu. Savā .ssh/config jāievieto sekojošais:
    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh sūtīs echo attālinātajam mezglam ik pēc ServerAliveInterval sekundēm, lai pārbaudītu savienojumu. Ja vairāk nekā ServerAliveCountMax eho nesaņem atbildi, ssh izbeigs savienojumu pēc laika un izies no sesijas.

  2. Iziet no sesijas. SSH pēc noklusējuma izmanto simbolu ~ (tilde) kā kontrolsimbolu. Komanda ~. aizver atvērtu savienojumu un atgriež jūs atpakaļ terminālā. (Kontroles secības var ievadīt tikai jaunā rindā.) Komanda ~? izvadīs pilnu pieejamo komandu sarakstu šajā sesijā. Ņemiet vērā, ka starptautiskajās tastatūrās, iespējams, būs nepieciešams nospiest taustiņu ~ divreiz, lai ierakstītu simbolu ~.

Kāpēc vispār rodas iestrēgušas sesijas? Interneta radīšanas laikos datori reti tika pārvietoti. Kad jūs izmantojat klēpjdatorus un pārslēdzaties starp vairākām IPv4 WiFi tīklām, jūsu IP adrese mainās. Tā kā SSH paļaujas uz TCP savienojumiem, kas, savukārt, paļaujas uz galapunktu ar stabilu IP adresi, katru reizi, kad jūs pārvērtat tīklus, jūsu SSH savienojumi zaudē soketa aprakstītāju un faktiski pazūd. Kad mainās jūsu IP adrese, jūsu tīkla kaudze prasa laiku, lai atklātu zaudēto aprakstītāju. Kad rodas tīkla traucējumi, mēs nevēlamies, lai kāds no mezgliem TCP savienojumā pārtrauktu to pārāk agri. Tādēļ protokols cenšas atkārtoti nosūtīt datus vēl dažas reizes pirms visbeidzot padodas. Tikmēr jūsu terminālā sesija izskatīsies kā iesprūdusi. IPv6 pievieno dažas ar mobilitāti saistītas funkcijas, kas ļauj ierīcei saglabāt mājas adresi, mainoties tīklam. Varbūt kādu dienu tas pārstās būt tik liela problēma.

Kā saglabāt pastāvīgu terminālu atvērtu attālinātajā mezglā

Ir divi dažādi pieejas veidi, kā saglabāt savienojumu, pārejot starp dažādiem tīkliem vai vēloties īslaicīgi atvienoties.

1. Izmantot Mosh vai Eternal Terminal

Ja jums tiešām ir nepieciešams savienojums, kas nenokļūst pat tad, kad pārslēdzaties starp tīkliem, izmantojiet mobilās Mosh terminālu. Tas ir drošs termināls, kurš vispirms izmanto SSH rokas spiedienu, un pēc tam pāriet uz savu šifrēto kanālu visā sesijas laikā. Tā Mosh izveido atsevišķu, ļoti izturīgu un drošu kanālu, kas spēj izturēt interneta pārtraukumus, jūsu klēpjdatora IP adreses maiņu, nopietnus tīkla pārtraukumus un daudz ko citu, un tas viss ir pateicoties UDP savienojumiem un Mosh izmantotajam sinhronizācijas protokolam.

Lai izmantotu Mosh, jums būs jāinstalē tas gan klientā, gan serverī, un jāatver 60000-61000 porti bezsavienojuma UPD datu plūsmai uz jūsu attālināto hostu. Nākotnē savienojumam pietiks izmantot mosh user@server.

Mosh darbojas ekrānu un taustiņu spiedienu līmenī, kas dod tai virkni priekšrocību salīdzinājumā ar standarta ievades un izvades binārā plūsmas pārsūtīšanu starp klientu un SSH serveri. Ja mums ir nepieciešams sinhronizēt tikai ekrānus un taustiņu spiedienus, tad pēc tam ir daudz vienkāršāk atjaunot pārtraukto savienojumu. Kamēr SSH buferē un nosūta visu, kas notiek, Mosh pietiek ar buferēšanu taustiņu spiedieniem un sinhronizāciju ar termināla loga pēdējo kadru.

2. Izmantojiet tmux

Ja vēlaties «nākt un iet, kad vien gribat» un saglabāt termināla sesiju attālinātajā mezglā, izmantojiet termināla multiplexer tmux. Man ļoti patīk tmux un es to lietoju nepārtraukti. Ja jūsu SSH savienojums tiek pārtraukts, lai atgrieztos savā tmux sesijā, pietiek tikai atkārtoti pieslēgties un ievadīt tmux attach. Turklāt tam ir brīnišķīgas funkcijas, piemēram, iekšējo terminālu cilnes un paneļi, līdzīgi kā cilnes iOS terminālī, kā arī iespēja dalīties terminālos ar citiem.

Daži cilvēki mīl uzlabot savu tmux ar Byobu, pakotni, kas būtiski uzlabo tmux lietojamību un pievieno tam daudz taustiņu kombināciju. Byobu tiek iekļauts Ubuntu, un to viegli var instalēt uz Mac, izmantojot Homebrew.

Attālās termināla sesijas dalīšana ar draugu

Dažreiz, atkāpjoties no sarežģītām problēmām jūsu serveros, var rasties vēlme dalīties ar SSH sesiju ar kādu, kurš nav vienā istabā ar jums. tmux ir ideāli piemērots šim uzdevumam! Pietiek veikt tikai dažas vienkāršas darbības:

  1. Pārliecinieties, ka tmux ir uzstādīts jūsu bastion serverī vai kādā citā serverī, ar kuru plānojat strādāt.
  2. Abiem jums būs nepieciešams pieslēgties SSH ierīcei, izmantojot vienu kontu.
  3. Viens no jums jāuzsāk tmux, lai sāktu tmux sesiju.
  4. Otrs jāuzsāk tmux attach
  5. Lūk! Jums ir kopīgs termināls.

Ja jums patīk sarežģītākas vairāku lietotāju tmux sesijas, mēģiniet tmate, tas ir tmux atvērtais kods, kas ievērojami atvieglo kopīgas termināla sesijas.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster