SSH Ce și cum

Mulți dezvoltatori web utilizează zilnic SSH ("Secure Shell") pentru a-și administra serverele, a crea copii de rezervă, a lucra de la distanță și o mulțime de alte sarcini. Astăzi, voi explica ce este SSH, faceți o scurtă analiză a istoricului și, în sfârșit, vă învăț cum să o configurați pe serverul dvs. de la distanță sau chiar pe rețeaua locală. Să începem!


A Început Explicație

Dacă citiți acest lucru, probabil că sunteți cel puțin familiarizat cu Terminalul (sau cu Windows, ceva de genul Cygwin). Dacă da, atunci veți înțelege această explicație funcțională rapidă a SSH.

SSH utilizează în mod esențial o conexiune de rețea pentru a intra în Terminal pe un alt computer.

Dacă nu sunteți familiarizat cu Terminalul, există multe explicații și ghiduri pentru începători la Terminal, atât aici, cât și pe Nettuts + și în altă parte. Puterea SSH se bazează pe simplitatea sa; prin oferirea accesului la terminalul unei alte mașini, SSH taie la urmărire și vă oferă control complet asupra unei mașini la distanță. Dacă înțelegeți puterea Terminalului și conexiunea sa directă cu funcționarea interioară a mașinii dvs. locale, atunci înțelegeți puterea SSH!


O scurta istorie

SSH a fost dezvoltat în starea sa infantilă în 1995. Dezvoltatorul principal, Tatu Ylonen, la dezvoltat ca prima modalitate sigură de a administra un sistem UNIX la distanță. Înainte de SSH, singurele instrumente care au existat au trimis informații precum parole în text clar.


Deci, cum o folosesc?

Există un milion de ghizi în legătură cu cum să vă configurați cu SSH. Vom acoperi în mod special o metodă astăzi. În primul rând, mai întâi, veți dori să vă asigurați că aveți SSH în sistemul dvs..

  • Mac - O versiune de OpenSSH este preinstalată.
  • ferestre - Urmați un ghid ca acesta sau pe acesta pentru a obține Cygwin și pachetul "openssh" instalat.
  • Linux - OpenSSH este foarte probabil să fie instalat deja, dar dacă nu este, puteți urma același ghid pentru al instala.

Pentru a determina dacă SSH este instalat, executați "care ssh". Dacă terminalul returnează ceva de-a lungul liniilor / Usr / bin / ssh, atunci ești bine să pleci! În caz contrar, urmați unul din aceste ghiduri pentru al instala.

În acest articol, voi presupune că versiunea pe care o utilizați este OpenSSH; există unele diferențe de configurare care depind de versiunea SSH. Vom explica cum să configurați un Mac pentru a vă conecta la un server MediaTemple printr-o singură comandă SSH. Odată ce ați instalat SSH pe mașină, va trebui să vă asigurați că gazda dvs. țintă a activat SSH. SSH rulează prin portul 22 în mod implicit; puteți utiliza un instrument de linie de comandă cum ar fi Nmap pentru a verifica dacă serverul 22 acceptă conexiunile primite, cum ar fi:

 sudo nmap -sS hostname.com

Desigur, probabil că aveți acces la interfața administrativă a serverului. Asigurați-vă că vă uitați prin opțiuni și activați SSH. Pe un server Mediatemple, această configurație este situată sub panoul de control al serverului. Mediatemple SSH este accesibil folosind [email protected]. Puteți adăuga utilizatori în cont, dar pentru a păstra lucrurile simple, vom folosi [email protected].

Odată ce SSH este activată (și ați setat o parolă de root în administratorul serverului dvs.), puteți rula următoarea linie în SSH în serverul dvs..

 ssh [email protected]

... unde primdomain.com este domeniul dvs. primar MediaTemple. Apoi vi se va solicita parola (care este parola de root pe care o setați în panoul de control). Dacă nu utilizați MediaTemple, aveți posibilitatea să trimiteți SSH direct la adresa IP a serverului dvs..

Dacă utilizați gazdă partajată, este posibil să nu vă conectați ca root. În schimb, vă veți conecta cu un nume de cont de utilizator. De exemplu, dacă utilizați un serviciu cum ar fi Site5, vă puteți conecta cu un nume de utilizator la un subdomeniu, după cum urmează:

 ssh [email protected]

În cele din urmă, aceste configurații vor depinde de compania dvs. specifică de servere web. Consultați documentația gazdei dvs. pentru mai multe informații.

Odată ce sunteți "îmbrăcați în", puteți executa comenzi și traversa sistemul de fișiere în Terminal. În funcție de nivelul dvs. de acces, este posibil să puteți instala lucruri pe server utilizând comenzile apt-get sau wget. Aveți posibilitatea să gestionați serverul Apache, să editați fișiere de configurare cu un editor de text bazat pe Terminal, să vizualizați jurnalele de eroare, să memorați cache-urile, să vizualizați fișierele direct pe un server pentru a vă asigura că acestea sunt versiunea corectă și multe alte sarcini de administrare a sistemului mai mici . Acum, dacă ați fi vrut să faceți asta Mai repede cu SSH?


Cum o folosesc ... Mai bine?

Există câteva lucruri puternice pe care SSH le deschide. Vom trece peste câteva dintre ele (multe dintre ele fiind legate de sysadmin, cum ar fi tunelul). Dar vom trece peste câteva trucuri utile.

Conectare rapidă rapidă

Te gândești la tine, "pare că ar trebui să existe o cale mai rapidă de a face acest lucru". Ai dreptate. Si aici este. În loc să vă amintiți domeniul, parola și numele de utilizator pentru fiecare server, puteți configura câteva configurații care vă vor permite să accelerați procesul de la ceva de-a lungul acestor linii.

 ssh myserver

Cu configurația corectă, puteți rula acest lucru și fără a trebui să introduceți parole, adrese IP sau nume de domenii lungi, sunteți în! Din nou, vom presupune că vă conectați la un server MediaTemple. În primul rând, vom genera tastele ssh. Acesta este în esență un set de chei criptate care trăiesc în ~ / .Ssh pe mașina dvs. locală. Aveți o cheie "publică" și o cheie "privată". Deci, mai întâi, mai întâi, deschideți o nouă fereastră Terminal și creați folderul .ssh în directorul de acasă.

 mkdir ~ / .ssh

În continuare, veți genera cheile cu următoarea linie. (Aceasta vine direct din documentația MediaTemple.)

 ssh-keygen -t rsa -b 2048 -f ~ / .ssh / id_rsa -C "Comentariu despre cheia ta merge aici."

Această linie va genera o cheie ssh de tip rsa, cu 2048 biți (pentru securitate), la locația de fișier specificată, cu comentariul specificat. Veți fi solicitat o parolă, dar nu este obligatorie sau necesară; neacordarea unei parole vă va permite să vă autentificați automat. Tipul RSA este pentru versiunea protocolului SSH 1. Tipul DSA este pentru versiunea de protocol 2. Verificați cu serverul dvs. web pentru a afla ce versiune utilizează. Odată ce cheile sunt generate, veți rula apoi acest lucru pentru a vă asigura că configurațiile SSH sunt setate la permisiunile corecte.

 chmod 700 ~ / .ssh && chmod 600 ~ / .ssh / *

Apoi, veți încărca cheia dvs. publică pe serverul dvs. Există numeroase modalități de a face acest lucru; acest fel vine și din documentele MediaTemple.

 cat ~ / .ssh / id_rsa.pub | ssh [email protected] "cat - >> ~ / .ssh / authorized_keys"

Acest cod este echivalent cu id_rsa.pub printr-un '|' (conducta) în următoarea comandă, care este un SSH în [email protected], unde veți rula un ecou și o concatenare a ceea ce ați pipetat în prima comandă. Suna cam un pic complicat, deci există câteva modalități alternative de a face față acestei situații. În esență, nu veți dori să rupă linii și cheia dvs. publică pe propria linie într-un fișier numit authorized_keys pe serverul dvs. în directorul ~ / .ssh /. Deci, dacă aceasta este prima sau singura cheie pe care o doriți pe serverul dvs., puteți executa această comandă pentru ao copia direct în acea locație.

 scp ~ / .ssh / id_rsa.pub [email protected]: .ssh / authorized_keys

Această linie spune, în esență, "copiați acest prim fișier prin SSH către serverul din această locație în raport cu actualul director de acasă."

Odată ce cheile dvs. autorizate conțin cheia dvs. publică, puteți încerca să vă conectați la server cu ssh [email protected]. Dacă vă puneți cheia publică în fișierele de configurare SSH ale directorului de utilizatori root, veți putea să vă conectați direct la root. Veți fi întrebat despre o amprentă rsa; continuați și permiteți această acțiune. Se adaugă serverul la care vă conectați într-un fișier known_hosts. Acest fișier poate fi folosit pentru multe lucruri diferite, dar în special pentru a vă asigura împotriva a ceea ce se numește atac "om-în-mijloc". Dacă doriți să citiți mai multe despre acest lucru, verificați această explicație.

Dacă vă puteți conecta cu succes la serverul dvs., ca și cum ați fi introdus o parolă, cheile funcționează corect. Următorul pas este să adăugați câteva linii pentru o comandă rapidă la un fișier de configurare de pe aparat. Deschideți ~ / .ssh / config în editorul dvs. de text preferat (creați-l dacă acesta nu există) și adăugați următoarele:

 Scurtă prezentare gazdă HostName somehost.com Nume de utilizator al utilizatorului

În cazul în care "shortname" este o poreclă pentru serverul în care doriți să vă conectați. De exemplu, "Myserver gazdă" mi-ar permite să fac ssh myserver. Numele HostName este locația serverului dvs. și, desigur, utilizatorul este numele dvs. de utilizator. Ai putea avea User root în acest loc. Odată ce acest fișier este salvat, ar trebui să puteți rula o comandă simplă pentru a vă conecta la serverul dvs., cum ar fi:

 ssh shortname

Git fără hub

Vă rugăm să rețineți: această secțiune necesită un pic de familiaritate cu Git.

Puteți utiliza SSH pentru a vă configura propriile repo Git pe serverul dvs.! Acest lucru este util pentru companiile care nu doresc să-și expună codul pe GitHub, indiferent de motiv, și este minunat să puteți împinge direct dintr-o mașină locală într-un replică Git pe propriul server.

Pentru a configura acest lucru, asigurați-vă că Git este instalat atât pe gazdă, cât și pe mașina locală. Este posibil să trebuiască să treceți prin compania dvs. de server web pentru a avea instalat Git. În continuare, fugiți git init pe serverul dvs. în locația în care doriți să fie repo Git. Desigur, puteți face acest lucru o sută de moduri diferite, dar dacă preferați să nu aveți un magazin gol, puteți utiliza ramuri pentru a împinge de la mașina dvs. locală. Iată un flux de lucru comun.

 ssh [email protected] cd / path / to / repos git init git checkout -b staționare git checkout master # deconectați de la sesiunea shell utilizând ctrl-d cd / local / repos git init git add. git commit -am "un mesaj" git adăugați la distanță origine [email protected]: / path / to / repo git checkout -b staționare git push staționare de origine ssh [email protected] cd / path / to / repo

În esență, ceea ce se întâmplă aici este că vă conectați la server, treceți la calea repo dorită, creați un depozit și adăugați o filială "staționare" pe care o puteți împinge de la mașina dvs. locală. Apoi, vă creați repo local și o filială corespunzătoare "staging" pe mașina dvs. locală, și adăugați fișiere pentru a urmări la repo. Apoi vine un comitet inițial. Apoi adăugați depozitul de la distanță ca un alias de "origine". Apoi, împingeți sucursala locală de redare către ramura de așteptare a aliasului "origine". În cele din urmă, ssh'ing înapoi în server și fuzionează ramura "staging" cu ramura implicită "master".

SFTP> FTP

De asemenea, puteți utiliza FTP (transfer de fișiere), care este în esență o versiune mai sigură (criptată) a FTP care rulează peste portul 22 (mai degrabă decât portul FTP implicit 21). Majoritatea clienților FTP suportă și SFTP. FileZilla (pentru Windows) și Fetch (pentru Mac) sunt doi clienți SFTP / FTP (și gratuit).

Acces ușor la serverul dvs. aproape oriunde

Atâta timp cât vă aflați în jurul unui computer conectat la internet, are un terminal și are instalat SSH (de exemplu, orice Mac conectat la WiFi), puteți accesa serverul prin SSH. Aceasta este cea mai bună parte. Nu aveți nevoie de nici o configurație (presupunând că nu ați stabilit nici o restricție necesita un pubkey de potrivire), vă puteți conecta cu numele de utilizator și parola de la practic oriunde. Există chiar și clienți SSH pentru iOS și alte dispozitive mobile. Aceasta este o caracteristică foarte puternică a SSH care este paralelă cu portabilitatea prin aplicații bazate pe browser.

Un repo cod local

Sperăm că puteți vedea puterea SSH într-un ciclu zilnic de dezvoltare.

Să ne imaginăm că tu și câțiva prieteni lucrează împreună la un cod. Să spunem, de asemenea, că aveți un computer local pe care îl aveți pe deplin controlul pe care îl utilizați ca server de dezvoltare LAMP cu câteva instalări pe acesta. Puteți utiliza SSH la nivel local pentru a muta fișiere către și de pe computer și pe mașina de dezvoltare. Puteți chiar să configurați un replică locală Git (sau svn, sau Mercurial), alimentată de SSH, pentru a ține totul sub control. Poate că ați putea chiar să faceți mașina de dezvoltare singura mașină care este conectată la serverul de la distanță prin SSH, astfel încât codul are pentru a trece printr-un anumit proces de stadializare înainte ca acesta să poată fi pus în producție. Coloana vertebrală a tuturor acestor acțiuni este SSH!

Sperăm că puteți vedea puterea SSH într-un ciclu zilnic de dezvoltare, în special pentru echipele care folosesc controlul versiunii. După cum am observat anterior, există o mulțime de documente și o multitudine de alte instrumente la nivel de rețea, bazate pe sau bazate pe SSH, care vă vor oferi mai mult control și putere asupra procesului de dezvoltare și a serverului dvs. Cine știe? Poate, într-o bună zi, ați putea dubla ca un sysadmin la urma urmei!


Unele alte link-uri utile

Iată câteva alte linkuri utile pentru a începe să începeți cu SSH. A fost în jur de ceva timp, deci există o mulțime de documente plutitoare în jur.

  • Manualul oficial OpenSSH
  • Introducerea jurnalei Linux la SSH

Vă mulțumim pentru lectură!

Cod