Vi har vist dig, hvordan du bruger SSH til at overføre filer sikkert. Men der er et stort problem med SSHs standardadfærd. Du er kun tilsluttet fjernmaskinen, når du manuelt har indtastet adgangskoden, som regulerer det for eventuelle opgaver, du vil løbe uden tilsyn. Eller gør det?

Her er en hurtig downdown på, hvordan OpenSSH CLI værktøjerne (scp og sftp) fungerer, så du bedre kan sætte pris på problemet. Når du vil kopiere filer til eller fra fjernværten, kan du bruge scp, som automatisk starter en SSH-forbindelse til den eksterne vært. Hver gang du kører en scp-kommando, etableres en ny forbindelse til fjernbetjeningen. Så hvis du har flere SCP-kommandoer, vil du indtaste den samme adgangskode flere gange.

Det er derfor, du ikke vil bruge scp i nogen scripts, du vil køre uovervåget. Der er også det faktum, at hvis du har flere konti på flere maskiner på netværket, har du svært ved at huske unikke, stærke adgangskoder til hver.

For at overvinde dette problem skal du skifte OpenSSHs standardautentificeringsmekanisme til et nøglesystem.

Nøglen til succes

Som standard bruger OpenSSH kun nøgler til at autentificere en servers identitet første gang en klient møder en ny fjernmaskine:

 $ ssh [email protected] Autentiteten af ​​værten 'atlantis.remote.com (atlantis.remote.com)' kan ikke oprettes. ECDSA nøglefingeraftryk er da: e8: a2: 77: f4: e5: 10: 56: 6d: d4: d2: dc: 15: 8e: 91: 22. Er du sikker på, at du vil fortsætte med at forbinde (ja / nej)? 

Når du svarer ved at skrive "ja", tilføjes den eksterne vært til listen over kendte værter. Så ud over serveren, der autentificerer klienten ved at anmode om et kodeord, godkender klienten også serveren ved hjælp af en nøgle.

På samme måde kan du også få dig et sæt nøgler til at bevise din identitet. OpenSSH bruger et par nøgler til at bevise din identitet og skabe en sikker forbindelse til en fjernserver. Den private nøgle er kun for øjnene og bruges af din OpenSSH-klient til at bevise din identitet til servere. Derefter er der den offentlige nøgle, som du skal holde under alle dine konti på alle de eksterne maskiner, du vil have til SSH.

For at oprette en nøgle skal du indtaste:

 $ ssh-keygen Generering af offentlige / private rsa-nøglepar. Indtast fil for at gemme nøglen (/home/bodhi/.ssh/id_rsa): Indtast adgangskode (tom uden kodeord): Indtast samme adgangskode igen: Din identifikation er blevet gemt i /home/bodhi/.ssh/id_rsa. Din offentlige nøgle er blevet gemt i /home/bodhi/.ssh/id_rsa.pub. 

Husk ikke at lade passordet være tomt og notere det sted, hvor tasterne er gemt. Filen "id_rsa" kan kun læses af din konto, og dens indhold krypteres med den adgangskode, du har leveret under generationen.

Det næste trin er at kopiere den offentlige nøgle til den eksterne server. Forudsat at du ønsker at logge ind på bruger "admin" på fjernmaskinen kaldet "atlantis.remote.com", kan du flytte tasterne med en enkelt kommando:

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

Når du har angivet adgangskoden til din private nøgle, placeres den offentlige nøgle automatisk på det rigtige sted på den eksterne server, som som standard er filen "~ / .ssh / authorized_keys".

Når du nu ssh til fjernmaskinen, bliver du bedt om din adgangskode. Den eneste fordel ved at bruge nøgler er, at i stedet for at godkende dig med et kodeord, der sendes ukrypteret, etablerer den eksterne server og din klient din identitet ud fra nøglerne.

Du kan også nu ssh i flere fjernbetjeningsbokse ved hjælp af samme adgangskode, så længe disse fjernmaskiner har din offentlige nøgle. Så du behøver ikke at huske flere adgangskoder.

Men du kan stadig ikke køre scripts uden at blive afbrudt af passphrases.

Relateret : Sådan aktiveres to-faktor-godkendelse til SSH-forbindelse

SSH-agent til undsætning

OpenSSH pakker et værktøj kaldet ssh-agent, der holder dine private nøgler i hukommelsen. Når en agent kører i stedet for at spørge dig om passphrases, vil SSH-klienterne interagere med agenten.

Du kan starte agenten med " ssh-agent /bin/bash ", forudsat at du bruger bash shell.

Eventuelle kommandoer, der kræver adgang til dine private private nøgler, vil blive opsnappet og besvaret af agenten.

Når agenten kører, skal du udstyre den med dine nøgler. Dette gøres ved at påkalde "ssh-add" -programmet, der som standard indlæser tasterne fra standardidentitetsfilen (~ / .ssh / id_rsa).

 $ ssh-add Indtast adgangskode til /home/bodhi/.ssh/id_rsa: Tilføjet identitet: /home/bodhi/.ssh/id_rsa (/home/bodhi/.ssh/id_rsa) 

Nu når du logger ind på fjerncomputeren med " ssh [email protected] ", får du lov uden at indtaste adgangskoden!

Tilsvarende vil scp og sftp også kunne oprette forbindelse til de eksterne værter uden at skulle bede dig om en adgangskode. Så du kan nu planlægge og køre scripts, som automatisk manipulerer filer på en ekstern maskine.

Også nu, når du bruger nøgler, er det en god idé at deaktivere godkendelse via adgangskoder. For at gøre dette skal du redigere fjernserverens konfigurationsfil (/etc/ssh/.sshd_config) og ændre parameteren " PasswordAuthentication " fra "ja" til "nej". Fra nu af, hvis nogen forsøger at oprette forbindelse til din SSH-tjeneste, der ikke har en offentlig nøgle på serveren, bliver de nægtet adgang uden at se login prompten.

Billedkredit: Karunakar Rayker