SSH autentisering uten passord ved bruk av elektronisk signatur
In English  En Español  

Når vi logger inn til en ekstern datamaskin som er kanskje lang borte av oss, for eksempler en vevtjener, vi kan logger inn uten å bruke passord ved bruk av elektronisk signatur. Vi kan bruke Asymmetrisk kryptering (også kjent som offentlig nøkklkryptering). Hva vi gjør er å generere en par av kryptografiske nøkler (en offentlig nøkkel og en privat nøkkel). Da vi legger vår offentlig nøkkel til liste av autorisert nøkkel på vevtjener vi ønsker å logger inn til.

Forst vi generere nøkkel par på datamaskin vi ønsker å bruke for å logger inn til SSH server:

ssh-keygen -t rsa -b 2048

Dette kommand generere to filer, en som heter id_rsa som er privat nøkkler, og en som heter id_rsa.pub som er offentlig nøkkler. Etterpå vi bare trenger vår offentling nøkkler på listen av autorisert nøkkler på vevtjener. Denne filen ligger på ~/.ssh/authorized_keys

En måte å gjøre det på er å laste opp filer id_rsa.pub til vevtjener, da sette sammen innhold av filer til ~/.ssh/authorized_keys. Hvis filen authorized_keys eller mappe .ssh eksisterer ikke, du kan legged det med kommander mkdir og filer med kommander touch, selv om cat commander legge filen hvis den ikke allerede eksisterer.

scp ~/.ssh/id_rsa.pub user@domain:~
ssh bruker@domene
ls -d .ssh || mkdir .ssh
cat id_rsa.pub >> ~.ssh/authorized_keys
rm id_rsa.pub

Annen vei for å gjøre det er å bruke alt kommander på en singel (men lenge) kommander:

cat ~/.ssh/id_rsa.pub | ssh bruker@domene 'ls -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys'

Når dette er gjort, ikke glemme å gi passende tillatelser til mappe, ellers annen bruker på samme system kunne legge nøkkel til authorized_keys og etter på logger inn med SSH til systemet som deg.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Vi er ferdige

Hva er viktig her er at informasjonen som er kryptert med privat nøkkelen kan bare åpnes med offentlig nøkkelen, og informasjon som er kryptert med offentlig nøkkelen kan bare åpnes med privat nøkkelen.

Graver Dypere

Det er to SSH protokoller, gamle gjennomføring (protokoller 1) og nyeste gjennomføring (protokoller 2). Personlig jeg bruker bare protokoller 2 og kjenner ingen som bruken protokoller 1.

Det er flere algoritmer som vi kan bruker for digital signering, med SSH vi kan bruke RSA (Rivest, Shamir og Adleman; det er oppkalt etter skaperne), DSA (Digital Signaturalogritme - Digital Signatura Algorithm), ECDSA (elliptisk kurve Digital Signaturalgoritme - Elliptic Curve Digital Signature Algorithm). For å ikke gjøre dette lenge (jeg tror dette skulle ha egen artikler):

  • DSA bruker en dårlig RNG (Tilfeldig Talgenerator - Random Number Generator), det er ikke lenger akseptert etter openSSH versjon 7,0. jeg anbefaler det ikke.
  • ECDSA det tillater oss å bruke mindre størrelse nøkler som koster mindre beregningsressurser. 256-bit elliptisk kurve nøkkel er sammenlignbar med 3072-bit RSA nøkkel.
  • RSA er sterk, med 4096-bit er sikker. En fordel av RSA er at den er tilgjengelig overalt.

Denne nøkkelen er bare for autentisering når vi logger inn, etter på SSH bruker annen type av cryptering.

Bruk ECDSA i stedet for RSA

Hvis du foretrekker å bruke ECDSA for autentisering med SSH server, du kan bruke følgende kommandoer:

ssh-keygen -t ecdsa -b 521

Dette vil generere filer id_ecdsa (privat nøkkel) og id_ecdsa.pub (offentlig nøkkel), da legger vi nøkkel til authorized_key ved bruke av metode 1:

scp ~/.ssh/id_ecdsa.pub bruker@domene.tld:~/
ssh bruker@domene.tld
ls -d .ssh || mkdir .ssh
cat id_ecdsa.pub >> ~/.ssh/authorized_keys

Ellers metode 2:

cat ~/.ssh/id_ecdsa.pub | ssh bruker@domene.tld 'ls -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys'