SSH wat en hoe

Veel webontwikkelaars gebruiken SSH ("Secure Shell") dagelijks om hun servers te beheren, een back-up van bestanden te maken, op afstand te werken en een groot aantal andere taken. Vandaag zal ik uitleggen wat SSH is, een korte geschiedenisbeoordeling uitvoeren en ten slotte leren hoe je het moet instellen op je externe server of zelfs je lokale netwerk. Laten we beginnen!


Een startuitleg

Als u dit leest, is het waarschijnlijk dat u op zijn minst enigszins bekend bent met Terminal (of op Windows, zoiets als Cygwin). Als dat zo is, dan zult u deze snelle functionele uitleg van SSH begrijpen.

SSH gebruikt in essentie een netwerkverbinding om Terminal op een andere computer binnen te komen.

Als u niet bekend bent met Terminal, zijn er veel uitleg en beginnershandleidingen voor Terminal, beide hier op Nettuts + en elders. De kracht van SSH is afhankelijk van de eenvoud; door je toegang te bieden tot de Terminal van een andere machine, doorsnijdt SSH de achtervolging en heb je volledige controle over een machine op afstand. Als je de kracht van Terminal en zijn directe verbinding met de innerlijke werking van je lokale machine begrijpt, dan begrijp je de kracht van SSH!


Een korte geschiedenis

SSH werd in 1995 in zijn kinderstaat ontwikkeld. De primaire ontwikkelaar, Tatu Ylonen, ontwikkelde het als de eerste veilige manier om een ​​extern UNIX-systeem te beheren. Voorafgaand aan SSH, de enige tools die bestond, stuurde informatie zoals wachtwoorden in duidelijke tekst.


Dus, hoe gebruik ik het?

Er zijn een miljoen gidsen over hoe je met SSH kunt beginnen. We zullen vandaag specifiek één methode behandelen. Allereerst moet je ervoor zorgen dat je SSH hebt op je systeem.

  • Mac - Een versie van OpenSSH wordt vooraf geïnstalleerd geleverd.
  • ramen - Volg een gids zoals deze of deze om Cygwin en het "openssh" -pakket geïnstalleerd te krijgen.
  • Linux - OpenSSH is hoogstwaarschijnlijk al geïnstalleerd, maar als dit niet het geval is, kunt u dezelfde handleiding volgen om het te installeren.

Om te bepalen of SSH is geïnstalleerd, voert u uit 'welke ssh'. Als Terminal iets retourneert in de trant van / Usr / bin / ssh, dan ben je klaar om te gaan! Volg anders een van deze handleidingen om deze te installeren.

In dit artikel ga ik ervan uit dat de versie die u gebruikt OpenSSH is; er zijn enkele configuratieverschillen die afhankelijk zijn van uw versie van SSH. We zullen uitleggen hoe we een Mac kunnen instellen om verbinding te maken met een MediaTemple-server via een enkele SSH-opdracht. Zodra SSH op uw computer is geïnstalleerd, moet u ervoor zorgen dat uw doelhost SSH heeft ingeschakeld. SSH wordt standaard uitgevoerd via poort 22; je kunt een commandoregel gebruiken zoals nmap om uw server te pingen om te bepalen of poort 22 inkomende verbindingen accepteert, zoals deze:

 sudo nmap -sS hostname.com

Natuurlijk hebt u waarschijnlijk toegang tot de beheerdersinterface voor de server. Zorg ervoor dat je de opties bekijkt en SSH inschakelt. Op een Mediatemple-server bevindt deze configuratie zich onder het paneel Serverbeheer. Mediatemple SSH is toegankelijk via [email protected]. U kunt gebruikers toevoegen aan het account, maar om het simpel te houden, gebruiken we [email protected].

Zodra SSH is ingeschakeld (en u hebt een root-wachtwoord ingesteld in uw serverbeheerder), kunt u de volgende regel naar SSH in uw server uitvoeren.

 ssh [email protected]

... waarbij primarydomain.com uw MediaTemple primaire domein is. U wordt vervolgens om uw wachtwoord gevraagd (dit is het rootwachtwoord dat u in het configuratiescherm hebt ingesteld). Als u MediaTemple niet gebruikt, kunt u SSH ook rechtstreeks naar het IP-adres van uw server sturen.

Als u shared hosting gebruikt, is het waarschijnlijk dat u niet als root inlogt. In plaats daarvan logt u in met de naam van een gebruikersaccount. Als u bijvoorbeeld een service zoals Site5 gebruikt, kunt u zich aanmelden met een gebruikersnaam bij een subdomein, zoals deze:

 ssh [email protected]

Uiteindelijk zullen deze configuraties afhankelijk zijn van uw specifieke webserverbedrijf. Raadpleeg de documentatie van uw host voor meer informatie.

Als u eenmaal "is ingesloten", kunt u opdrachten uitvoeren en het bestandssysteem binnen Terminal doorlopen. Afhankelijk van uw toegangsniveau, kunt u dingen op uw server installeren met apt-get of wget-opdrachten. U kunt uw Apache-server beheren, configuratiebestanden bewerken met een op Terminal gebaseerde teksteditor, foutlogboeken bekijken, caches wissen, bestanden direct op een server bekijken om er zeker van te zijn dat ze de juiste versie zijn en tal van andere systeemtaken op lager niveau. . Nu, wat als u wilde doen sneller met SSH?


Hoe gebruik ik het ... Beter?

Er zijn een ton krachtige dingen waar SSH je voor openstelt. We zullen er enkele overslaan (aangezien een flink aantal meer gerelateerd zijn aan sysadmin, zoals tunnelen). Maar we zullen een paar handige tricks bespreken.

Supersnel aanmelden

Je denkt bij jezelf: "het lijkt erop dat er een snellere manier is om dit te doen." Je hebt gelijk. En daar is. In plaats van dat u uw domein, wachtwoord en gebruikersnaam voor elke server moet onthouden, kunt u een aantal configuraties instellen waarmee u het proces kunt versnellen tot iets in deze richting.

 ssh myserver

Met de juiste configuratie kunt u dit uitvoeren en zonder dat u wachtwoorden, IP-adressen of lange domeinnamen hoeft in te voeren! Nogmaals, we gaan ervan uit dat u zich aanmeldt bij een MediaTemple-server. Eerst zullen we genereren ssh-toetsen. Dit is in feite een set gecodeerde sleutels die leven ~ / .Ssh op uw lokale computer. U hebt een "openbare" sleutel en een "private" sleutel. Begin dus eerst met het openen van een nieuw Terminal-venster en maak de map .ssh aan in je thuismap.

 mkdir ~ / .ssh

Vervolgens genereert u uw sleutels met de volgende regel. (Dit komt rechtstreeks uit de documentatie van MediaTemple.)

 ssh-keygen -t rsa -b 2048 -f ~ / .ssh / id_rsa -C "Commentaar over je sleutel komt hier."

Deze regel genereert een ssh-sleutel van het type rsa, met 2048 bits (voor beveiliging), op de opgegeven bestandslocatie, met de opgegeven opmerking. U wordt gevraagd om een ​​wachtwoord, maar dit is niet verplicht of noodzakelijk; als u geen wachtwoord opgeeft, kunt u zich automatisch aanmelden. Het RSA-type is voor SSH-protocolversie 1. Type DSA is voor protocolversie 2. Neem contact op met uw webserver om na te gaan welke versie zij gebruiken. Nadat uw sleutels zijn gegenereerd, voert u dit uit om te controleren of uw SSH-configuraties zijn ingesteld op de juiste machtigingen.

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

Vervolgens uploadt u uw openbare sleutel naar uw server. Er zijn nogal wat manieren om dit te doen; deze manier komt ook uit de documenten van MediaTemple.

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

Deze code geeft een echo van je id_rsa.pub door een '|' (pipe) in de volgende opdracht, die een SSH is in [email protected], waar je een echo en een aaneenschakeling van wat je in de eerste opdracht hebt doorlopen uitvoert. Het klinkt een beetje ingewikkeld, dus er zijn een paar alternatieve manieren om dit aan te pakken. In wezen wil je geen regeleinden en je openbare sleutel op zijn eigen regel in een bestand, genaamd authorized_keys op uw server in de map ~ / .ssh /. Dus als dit de eerste of enige sleutel is die u op uw server wilt, kunt u deze opdracht uitvoeren om deze rechtstreeks naar die locatie te kopiëren.

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

Deze regel zegt in feite "kopieer dit eerste bestand via SSH naar de server op deze locatie ten opzichte van mijn huidige homedirectory."

Zodra uw authorized_keys uw openbare sleutel bevat, kunt u proberen in te loggen op de server met ssh [email protected]. Als u uw publieke sleutel in de SSH-configuratiebestanden van de rootgebruikersdirectory plaatst, kunt u zich rechtstreeks aanmelden bij root. U wordt gevraagd naar een rsa-vingerafdruk; ga je gang en sta deze actie toe. Het voegt de server toe waarmee u een verbinding maakt met een bekend_hosts-bestand. Dit bestand kan voor veel verschillende dingen worden gebruikt, maar vooral om jezelf te beschermen tegen wat een "man-in-the-middle" -aanval wordt genoemd. Als je hier wat meer over wilt weten, bekijk dan deze uitleg.

Als u zich met succes bij uw server kunt aanmelden, alsof u een wachtwoord hebt ingevoerd, werken uw sleutels correct. De volgende stap is om een ​​paar regels toe te voegen voor een snelkoppeling naar een configuratiebestand op uw computer. Open ~ / .ssh / config in je favoriete teksteditor (maak het aan als het niet bestaat) en voeg het volgende toe:

 Host shortname Hostnaam somehost.com gebruikersnaam

Waar "shortname" een bijnaam is voor de server waarop u wilt inloggen. Bijvoorbeeld, "Host myserver" zou me toestaan ​​om te doen ssh myserver. De hostnaam is uw serverlocatie en natuurlijk is de gebruiker uw gebruikersnaam. Je mag hebben Gebruiker root op deze plek. Nadat dit bestand is opgeslagen, zou u een eenvoudige opdracht moeten uitvoeren om op uw server in te loggen, zoals dit:

 ssh shortname

Git zonder een hub

Let op: dit gedeelte vereist een beetje vertrouwdheid met Git.

Je kunt SSH gebruiken om je eigen Git repos op je server te zetten! Dit is handig voor bedrijven die hun code om wat voor reden dan ook niet willen tonen op GitHub, en het is geweldig om direct van een lokale machine naar een Git-repo op je eigen server te kunnen pushen..

Om dit in te stellen, moet Git zowel op de host als op uw lokale computer zijn geïnstalleerd. U moet mogelijk door uw webserverbedrijf gaan om Git te laten installeren. Voer vervolgens uit git init op uw server op de locatie waar u uw Git-repo wilt hebben. Natuurlijk kun je dit op honderd verschillende manieren doen, maar als je liever geen bare repository hebt, kun je branches gebruiken om naar te pushen vanaf je lokale machine. Hier is een gemeenschappelijke workflow.

 ssh [email protected] cd / path / to / repo git init git checkout -b staging git checkout master # ontkoppelen van shell-sessie met ctrl-d cd / local / repo git init git add. git commit -am "some message" git remote add origin [email protected]: / path / to / repo git checkout -b staging git push origin staging ssh [email protected] cd / path / to / repo git fusion staging

Wat hier in wezen gebeurt, is dat u zich aanmeldt bij de server, naar het gewenste repopad gaat, een repository aanmaakt en een "staging" -tak toevoegt die u kunt pushen vanaf uw lokale computer. Vervolgens maakt u uw lokale repository en een corresponderende "staging" -tak op uw lokale computer en voegt u bestanden toe om de repo bij te houden. Vervolgens komt een initiële commit. U voegt vervolgens de externe repository toe als een alias van "oorsprong". Vervolgens duwt u de lokale fasestructuur naar de faseringstak van de "oorsprong" -alias. Ten slotte keert u terug naar de server en voegt u de vertakking "staging" samen met de standaard "master" -tak.

SFTP> FTP

U kunt ook SSH-powered FTP (File Transfer Protocol) gebruiken, wat in wezen een meer veilige (gecodeerde) versie van FTP is die via poort 22 loopt (in plaats van de standaard FTP-poort 21). De meeste FTP-clients ondersteunen ook SFTP. FileZilla (voor Windows) en Fetch (voor Mac) zijn twee populaire (en gratis) SFTP / FTP-clients.

Gemakkelijke toegang tot uw server bijna overal

Zolang je in de buurt bent van een computer die is verbonden met internet, een Terminal heeft en SSH heeft geïnstalleerd (elke Mac die is verbonden met WiFi, bijvoorbeeld), kun je via SSH toegang krijgen tot je server. Dat is het beste deel. U hebt geen configuratie nodig (ervan uitgaande dat u hiervoor geen beperkingen heeft ingesteld vereisen een overeenkomende naamsleutel), kunt u vrijwel overal inloggen met uw gebruikersnaam en wachtwoord. Er zijn zelfs SSH-clients voor iOS en andere mobiele apparaten. Dit is een zeer krachtige functie van SSH die alleen wordt vergeleken in draagbaarheid door browser-gebaseerde applicaties.

Een lokale codereportage

Hopelijk kun je de kracht van SSH in een dagelijkse ontwikkelingscyclus zien.

Laten we ons voorstellen dat jij en een paar vrienden samen aan een code werken. Laten we ook zeggen dat je een lokale computer hebt waarover je de volledige controle hebt die je gebruikt als een ontwikkel-LAMP-server met een paar VM's erop geïnstalleerd. U kunt SSH lokaal gebruiken om bestanden van en naar uw computer en de ontwikkelmachine te verplaatsen. Je kunt zelfs een lokale Git (of svn, of Mercurial) repo opzetten, aangedreven door SSH om alles onder controle te houden. Misschien kun je de ontwikkelmachine zelfs de enige machine maken die via SSH met de server op afstand is verbonden, dus de code heeft om een ​​specifiek stadium te doorlopen voordat het in productie kan worden genomen. De ruggengraat van al deze acties is SSH!

Hopelijk kun je de kracht van SSH in een dagelijkse ontwikkelingscyclus zien, vooral voor teams die versiebeheer gebruiken. Zoals ik eerder heb opgemerkt, is er voldoende documentatie en een groot aantal andere tools op netwerkniveau op basis van of afhankelijk van SSH die u meer controle en macht over uw ontwikkelingsproces en uw server zullen geven. Wie weet? Misschien kun je je op een dag als een systeembeheerder verdubbelen!


Enkele andere nuttige links

Hier zijn enkele andere handige links om u op weg te helpen met SSH. Het bestaat al een tijdje, dus er is genoeg documentatie rondzweven.

  • Het officiële OpenSSH-handboek
  • Introductie van Linux Journal bij SSH

Bedankt voor het lezen!