Mange webutviklere bruker SSH ("Secure Shell") daglig for å administrere sine servere, sikkerhetskopiere filer, jobbe eksternt og et myriade av andre oppgaver. I dag skal jeg forklare hva SSH er, gjøre en kort historieoversikt, og til slutt lære deg hvordan du konfigurerer den på den eksterne serveren eller til og med ditt lokale nettverk. La oss komme i gang!
Hvis du leser dette, er det sannsynlig at du i det minste er litt kjent med Terminal (eller på Windows, noe som Cygwin). I så fall vil du forstå denne rask funksjonelle forklaringen av SSH.
SSH bruker i hovedsak en nettverkstilkobling for å komme inn i Terminal på en annen datamaskin.
Hvis du ikke er kjent med Terminal, er det mange forklaringer og nybegynner guider til Terminal, både her på Nettuts + og andre steder. SSHs kraft er avhengig av sin enkelhet; Ved å gi deg tilgang til Terminal på en annen maskin, setter SSH seg i jakten og gir deg full kontroll over en ekstern maskin. Hvis du forstår kraften til Terminal og dens direkte forbindelse til den indre arbeidet til din lokale maskin, så forstår du SSH's kraft!
SSH ble utviklet i sin spedbarnsstat i 1995. Den primære utvikleren Tatu Ylonen utviklet den som den første sikre måten å administrere et fjerntliggende UNIX-system på. Tidligere til SSH sendte de eneste verktøyene som eksisterte informasjon som passord i klar tekst.
Det er en million guider der ute på hvordan å få satt opp med SSH. Vi vil spesifikt dekke en metode i dag. Første ting først, vil du sørge for at du har SSH på systemet ditt.
For å finne ut om SSH er installert, kjør 'som ssh'
. Hvis Terminal returnerer noe i tråd med / Usr / bin / ssh
, så er du glad i å gå! Ellers følger du en av disse veiledningene for å få den installert.
I denne artikkelen vil jeg anta at versjonen du bruker, er OpenSSH; Det er noen konfigurasjonsforskjeller som avhenger av din versjon av SSH. Vi skal forklare hvordan du konfigurerer en Mac for å koble til en MediaTemple-server gjennom en enkelt SSH-kommando. Når du har installert SSH på maskinen din, må du sørge for at målverten din har SSH aktivert. SSH kjører over port 22 som standard; Du kan bruke et kommandolinjeverktøy som nmap
å pinge serveren din for å avgjøre om port 22 aksepterer innkommende tilkoblinger, slik som dette:
sudo nmap-sS hostname.com
Selvfølgelig har du sannsynligvis tilgang til administrativ grensesnitt for serveren. Pass på at du ser gjennom alternativene og aktiver SSH. På en Mediatemple-server ligger denne konfigurasjonen under Server Kontrollpanel. Mediatemple SSH er tilgjengelig ved hjelp av [email protected]. Du kan legge til brukere på kontoen, men for å holde ting enkelt, bruker vi [email protected].
Når SSH er aktivert (og du har angitt et root-passord i serveradministratoren din), kan du kjøre følgende linje til SSH i serveren din.
ssh [email protected]
... der primarydomain.com er ditt primære domenet MediaTemple. Du vil da bli bedt om passordet ditt (som er root-passordet du angir i kontrollpanelet). Hvis du ikke bruker MediaTemple, kan du SSH direkte til IP-adressen til serveren din også.
Hvis du bruker delt hosting, er det sannsynlig at du ikke logger på som root. I stedet logger du på med et brukernavn. Hvis du for eksempel bruker en tjeneste som Site5, kan du logge inn med et brukernavn på et underdomene, slik som dette:
ssh [email protected]
Til slutt vil disse konfigurasjonene avhenge av ditt spesifikke webserver selskap. Se vertsens dokumentasjon for mer informasjon.
Når du er "skallet inn", kan du utføre kommandoer og krysse filsystemet i Terminal. Avhengig av hvilket nivå du har tilgang til, kan du kanskje installere ting på serveren din ved hjelp av apt-get eller wget-kommandoer. Du kan administrere Apache-serveren, redigere konfigurasjonsfiler med en terminalbasert tekstredigerer, vise feillogger, slette cacher, se filer direkte på en server for å sikre at de er den riktige versjonen, og mange andre systemadministrasjonsoppgaver på lavere nivå . Nå, hva hvis du ønsket å gjøre raskere med SSH?
Det er massevis av mektige ting som SSH åpner deg for. Vi hopper over noen av dem (som ganske mange er mer sysadmin-relaterte, som tunneling). Men vi vil gå over noen nyttige triks.
Du tenker på deg selv, "virker som om det burde være en raskere måte å gjøre dette på." Du har rett. Og det er det. I stedet for å huske domenet ditt, passordet og brukernavnet for hver server, kan du sette opp noen få konfigurasjoner som gjør at du kan øke prosessen til noe i disse linjene.
ssh myserver
Med riktig konfigurasjon kan du kjøre dette, og uten å måtte skrive inn noen passord, IP-adresser eller lange domenenavn, er du inne! Igjen, vi antar at du logger inn på en MediaTemple-server. Først vil vi generere ssh nøkler. Dette er i utgangspunktet et sett med krypterte nøkler som lever i ~ / .Ssh
på din lokale maskin. Du har en "offentlig" nøkkel og en "privat" nøkkel. Så, først først, åpner du et nytt Terminal-vindu og lager .ssh-mappen i din hjemmekatalog.
mkdir ~ / .ssh
Deretter genererer du nøklene dine med følgende linje. (Dette kommer direkte fra MediaTemples dokumentasjon.)
ssh-keygen -t rsa -b 2048 -f ~ / .ssh / id_rsa -C "Kommentar om nøkkelen din går her."
Denne linjen vil generere en ssh-nøkkel av typen rsa, med 2048 bits (for sikkerhet), på angitt filsted, med kommentaren spesifisert. Du vil bli promprted for et passord, men det er ikke obligatorisk eller nødvendig; Hvis du ikke oppgir et passord, kan du automatisk logge inn. RSA-typen er for SSH-protokollversjon 1. Type DSA er for protokollversjon 2. Sjekk med din webserver for å finne ut hvilken versjon de bruker. Når tastene dine er generert, kjører du dette for å sikre at SSH-konfigurasjonene dine er satt til de riktige tillatelsene.
chmod 700 ~ / .ssh && chmod 600 ~ / .ssh / *
Deretter laster du opp offentlig nøkkel til serveren din. Det er mange måter å gjøre dette på; Denne måten kommer fra MediaTemples dokumenter også.
katt ~ / .ssh / id_rsa.pub | ssh [email protected] 'cat - >> ~ / .ssh / authorized_keys'
Denne koden echo din id_rsa.pub gjennom en '|' (rør) til neste kommando, som er en SSH i [email protected], hvor du vil kjøre et ekko og sammenhenger av hva du piped i den første kommandoen. Det høres litt komplisert, så det er noen alternative måter å håndtere dette på. I hovedsak vil du ikke ha noen linjeskift og din offentlige nøkkel på egen linje i en fil, kalt authorized_keys
på serveren din i ~ / .ssh / katalog. Så, hvis dette er den første eller eneste nøkkelen du vil ha på serveren din, kan du kjøre denne kommandoen for å kopiere den direkte til den plasseringen.
scp ~ / .ssh / id_rsa.pub [email protected]: .ssh / authorized_keys
Denne linjen sier i hovedsak, "kopier denne første filen via SSH til serveren på dette stedet i forhold til min nåværende hjemmekatalog."
Når din authorized_keys inneholder din offentlige nøkkel, kan du prøve å logge på serveren med ssh [email protected]. Hvis du legger din offentlige nøkkel i rotenbrukerkatalogen SSH-konfigurasjonsfiler, kan du logge inn direkte til rot. Du vil bli spurt om et rsa fingeravtrykk; gå videre og tillat denne handlingen. Det legger til serveren du kobler til til en known_hosts-fil. Denne filen kan brukes til mange forskjellige ting, men spesielt for å sikre deg mot det som kalles "man-i-midten" -angrep. Hvis du vil lese litt mer om dette, sjekk ut denne forklaringen.
Hvis du kan logge deg på serveren din, som om du hadde skrevet inn et passord, fungerer nøklene dine riktig. Det neste trinnet er å legge til et par linjer for en snarvei til en konfigurasjonsfil på maskinen din. Åpne ~ / .ssh / config i favoritt tekstredigeringsprogrammet (lag det hvis det ikke finnes) og legg til følgende:
Vertsnavnet HostName somehost.com Brukernavn
Hvor "kallenavn" er et kallenavn for serveren du vil logge på. For eksempel vil "Host myserver" tillate meg å gjøre ssh myserver
. Hostnavnet er din serverplassering, og selvfølgelig er brukeren ditt brukernavn. Du kan ha Brukerrot
på dette stedet. Når denne filen er lagret, bør du kunne kjøre en enkel kommando for å logge på serveren din, slik:
ssh kortnavn
Merk: Denne delen krever litt kjent med Git.
Du kan bruke SSH til å sette opp din egen Git repos på serveren din! Dette er nyttig for bedrifter som ikke vil utsette sin kode på GitHub uansett grunn, og det er flott å kunne presse direkte fra en lokal maskin til en Git repo på din egen server.
For å sette opp dette må du kontrollere at Git er installert på både verten og din lokale maskin. Du må kanskje gå gjennom webserverbedriften din for å ha Git installert. Deretter løp git init
på serveren din på stedet du vil at Git repo skal være. Selvfølgelig kan du gjøre dette på hundre forskjellige måter, men hvis du foretrekker å ikke ha et blott depot, kan du bruke grener til å presse til fra din lokale maskin. Her er en vanlig arbeidsflyt.
ssh [email protected] cd / bane / til / repo git init git kassa -b staging git checkout master # koble fra shell session ved hjelp av ctrl-d cd / local / repo git init git add. git commit -am "noen melding" git fjern legge til opphav [email protected]: / path / to / repo git checkout -b staging git push opprinnelsesstaging ssh [email protected] cd / path / to / repo git fusjonere staging
I hovedsak hva som skjer her er at du logger inn på serveren, bytter til ønsket repo-vei, lager et lager og legger til en "staging" -gren som du kan presse til fra din lokale maskin. Deretter lager du din lokale repo og en tilsvarende "staging" -gren på din lokale maskin, og legger til filer for å spore til repo. Neste kommer en første forpliktelse. Du legger deretter til fjernregisteret som et alias av "opprinnelse". Deretter skyver du den lokale staging grenen til "opprinnelses" alias staging grenen. Til slutt går du tilbake til serveren og slår sammen "staging" grenen med standard "master" grenen.
Du kan også bruke SSH-drevet FTP (filoverføringsprotokoll), som egentlig er en sikrere (kryptert) versjon av FTP som går over port 22 (i stedet for standard FTP-port 21). De fleste FTP-klienter støtter også SFTP. FileZilla (for Windows) og Fetch (for Mac) er to populære (og gratis) SFTP / FTP klienter.
Så lenge du er rundt en datamaskin som er koblet til Internett, har en terminal, og har SSH installert (hvilken som helst Mac som er koblet til WiFi, for eksempel), kan du få tilgang til serveren din, via SSH. Det er den beste delen. Du trenger ingen konfigurasjon (forutsatt at du ikke har opprettet noen restriksjoner som krever en matchende pubkey), kan du logge inn med brukernavn og passord fra nesten hvor som helst. Det er til og med SSH-klienter for iOS og andre mobile enheter. Dette er en veldig kraftig funksjon av SSH som bare er parallell i portabilitet av nettleserbaserte applikasjoner.
Forhåpentligvis kan du se kraften til SSH i en daglig utviklingssyklus.
La oss forestille deg at du og noen få venner jobber med en kode sammen. La oss også si at du har en lokal datamaskin som har full kontroll over det du bruker som en utviklings LAMP-server med noen få VM installert på den. Du kan bruke SSH lokalt til å flytte filer til og fra datamaskinen og utviklingsmaskinen. Du kan til og med sette opp en lokal Git (eller svn, eller Mercurial) repo, drevet av SSH for å holde alt i sjakk. Kanskje du kan til og med gjøre utviklingsmaskinen den eneste maskinen som er koblet til den eksterne serveren via SSH, slik at koden har å gå gjennom en bestemt stagingprosess før den kan settes i produksjon. Ryggraden i alle disse handlingene er SSH!
Forhåpentligvis kan du se kraften til SSH i en daglig utviklingssyklus, spesielt for lag som bruker versjonskontroll. Som jeg nevnte tidligere, er det mye dokumentasjon og et myriade av andre verktøy på nettverksnivå basert på eller avhengig av SSH som gir deg mer kontroll og kraft over utviklingsprosessen og serveren din. Hvem vet? Kanskje, en dag, kan du doble som en sysadmin tross alt!
Her er noen andre nyttige lenker for å komme i gang med SSH. Det har eksistert en stund, så det er rikelig med dokumentasjon som flyter rundt.
Takk for at du leste!