Vi har vist deg hvordan du bruker SSH til å overføre filer sikkert. Men det er et stort problem med SSHs standardadferd. Du er bare koblet til den eksterne maskinen når du har tastet inn passordet manuelt, som regulerer det for eventuelle oppgaver du vil løpe uten tilsyn. Eller gjør det?

Her er en rask nedgang på hvordan OpenSSH CLI-verktøyene (scp og sftp) fungerer slik at du bedre kan sette pris på problemet. Når du vil kopiere over filer til eller fra den eksterne verten, kan du bruke scp som automatisk starter en SSH-tilkobling til den eksterne verten. Hver gang du kjører en SCP-kommando, etablerer den en ny tilkobling til fjernkontrollen. Så hvis du har flere SCP-kommandoer, vil du skrive inn det samme passordet flere ganger.

Det er derfor du ikke vil bruke scp i noen skript du vil kjøre uovervåket. Det er også det faktum at hvis du har flere kontoer på flere maskiner på nettverket, har du problemer med å lagre unike, sterke passord for hver.

For å overvinne dette problemet må du bytte OpenSSHs standardautentiseringsmekanisme til et nøkkelbasert system.

Nøkkelen til suksess

Som standard bruker OpenSSH bare nøkler for å autentisere serverens identitet første gang en klient møter en ny ekstern maskin:

 $ ssh [email protected] Autentisiteten til verten 'atlantis.remote.com (atlantis.remote.com)' kan ikke opprettes. ECDSA-nøkkelfingeravtrykk er da: e8: a2: 77: f4: e5: 10: 56: 6d: d4: d2: dc: 15: 8e: 91: 22. Er du sikker på at du vil fortsette å koble til (ja / nei)? 

Når du svarer ved å skrive "ja", blir den eksterne verten lagt til i listen over kjente verter. Så i tillegg til at serveren autentiserer klienten ved å be om et passord, godkjenner klienten også serveren ved hjelp av en nøkkel.

På samme måte kan du også få deg et sett med nøkler for å bevise din identitet. OpenSSH bruker et par nøkler for å bevise din identitet og opprette en sikker tilkobling til en ekstern server. Den private nøkkelen er bare for øynene og brukes av OpenSSH-klienten din til å bevise identiteten din til serverne. Deretter er det offentlig nøkkel som du skal holde under alle dine kontoer på alle de eksterne maskinene du vil SSH inn i.

For å opprette en nøkkel, skriv inn på din klient:

 $ ssh-keygen Genererer offentlig / privat rsa nøkkelpar. Skriv inn fil for å lagre nøkkelen (/home/bodhi/.ssh/id_rsa): Skriv inn passordfrase (tom uten passordfrase): Skriv inn samme passord igjen: Identifikasjonen din er lagret i /home/bodhi/.ssh/id_rsa. Din offentlige nøkkel er lagret i /home/bodhi/.ssh/id_rsa.pub. 

Husk ikke å forlate passordet tomt og noter plasseringen der tastene er lagret. Filen "id_rsa" kan bare leses av kontoen din, og innholdet er kryptert med passordet du har levert under generasjonen.

Det neste trinnet er å kopiere den offentlige nøkkelen til den eksterne serveren. Forutsatt at du ønsker å logge inn på brukeren "admin" på den eksterne maskinen kalt "atlantis.remote.com", kan du flytte tastene med en enkelt kommando:

 $ ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected] [email protected] s passord: 

Når du har oppgitt passordet for din private nøkkel, blir den offentlige nøkkelen automatisk plassert på riktig sted på den eksterne serveren, som som standard er filen "~ / .ssh / authorized_keys".

Når du nå ssh til fjernmaskinen, blir du bedt om passordet ditt. Den eneste fordelen ved å bruke nøkler er at i stedet for å autentisere deg med et passord som overføres ukryptert, etablerer den eksterne serveren og klienten din identiteten basert på nøklene.

Du kan også nå ssh i flere eksterne bokser med samme passord, så lenge disse eksterne maskinene har din offentlige nøkkel. Så du trenger ikke å huske flere passord.

Men du kan fortsatt ikke kjøre skript uten å bli avbrutt for passord.

Relatert : Slik aktiverer du tofaktorautentisering for SSH-tilkobling

SSH-agent til redning

OpenSSH pakker et verktøy som heter ssh-agent, som holder dine private nøkler i minnet. Når en agent kjører, i stedet for å be om passord, vil SSH-klientene kommunisere med agenten.

Du kan starte agenten med " ssh-agent /bin/bash ", forutsatt at du bruker bash-skallet.

Eventuelle kommandoer som krever tilgang til OpenSSH private nøkler vil bli avlyttet og besvart av agenten.

Når agenten kjører, må du utstyre den med nøklene dine. Dette gjøres ved å påkalle "ssh-add" -programmet som standard laster nøklene fra standardidentitetsfilen (~ / .ssh / id_rsa).

 $ ssh-add Skriv inn passordfrase for /home/bodhi/.ssh/id_rsa: Identitet lagt til: /home/bodhi/.ssh/id_rsa (/home/bodhi/.ssh/id_rsa) 

Nå når du logger deg på den eksterne datamaskinen med " ssh [email protected] ", får du lov uten å skrive inn passordet!

Tilsvarende vil scp og sftp også kunne koble til eksterne verter uten å be om en passordfrase. Så du kan nå planlegge og kjøre skript som automatisk manipulerer filer på en ekstern maskin.

Også nå som du bruker nøkler, er det en god ide å deaktivere godkjenning via passord. For å gjøre dette, rediger den eksterne serverens config-fil (/etc/ssh/.sshd_config) og endre parameteren " PasswordAuthentication " fra "ja" til "nei". Fra nå av, hvis noen prøver å koble til SSH-tjenesten din, som ikke har en offentlig nøkkel på serveren, blir de nektet tilgang uten å se påloggingsprompten.

Bildekreditt: Karunakar Rayker