Du kan logga in på en Linux -server utan lösenord med SSH -nycklar. Denna metod är i allmänhet säkrare än lösenordsautentisering. Här är en uppdelning av processen:
1. Generera ett SSH -nyckelpar på din lokala maskin (klient)
*Öppna en terminal på din lokala maskin (där du kommer att ansluta *från *).
* Använd kommandot `SSH-Keygen`:
`` `bash
ssh-keygen
`` `
* instruktioner: Kommandot kommer att be dig om:
* ange filen för att spara nyckeln (/home/yourusername/.ssh/id_rsa): Tryck på Enter för att acceptera standardplatsen (`~/.ssh/id_rsa` för den privata nyckeln och` ~/.ssh/id_rsa.pub` för den offentliga nyckeln). Detta är vanligtvis det bästa alternativet.
* Ange lösenfras (tom för ingen lösenfras): Detta är *valfritt *. En lösenfras lägger till ett extra lager av säkerhet, vilket kräver att du anger det varje gång du använder nyckeln. Om du inte vill ange en lösenfras varje gång du ansluter, lämna den tom och tryck på Enter två gånger. Var dock medveten om att utan en lösenfras, om din privata nyckel komprometteras, kan alla med tillgång till den komma åt din server. Väg bekvämligheten mot säkerhetskonsekvenserna.
* Ange samma lösenfras igen: Om du valde att gå in i en lösenfras, bekräfta det.
* Nyckelfiler: När processen har slutförts har du två filer i katalogen '~/.SH`:
* `ID_RSA`:Detta är din privata nyckel . Håll den här filen hemlig och säker! Dela aldrig det med någon!
* `ID_RSA.PUB`:Detta är din offentliga nyckel . Du måste kopiera innehållet i den här filen till servern.
2. Kopiera den offentliga nyckeln till servern
Det finns flera sätt att kopiera den offentliga nyckeln till servern. Det enklaste är ofta "SSH-Copy-ID", men det kräver lösenordsautentisering *en sista gång *. Om du inte kan använda lösenordsautentisering till att börja med måste du använda en manuell metod.
* med `ssh-copy-id` (lättast om du har lösenordstillträde):
`` `bash
SSH-Copy-ID-användare@server_ip_address
`` `
Byt ut "Användare" med ditt användarnamn på servern och `server_ip_address" med serverns IP -adress eller värdnamn. Du blir ombedd att ditt lösenord på servern. Detta kommando lägger automatiskt till din offentliga nyckel till filen `~/.ssh/auktoriserad_keys på servern.
* manuell kopiering (om du inte har tillgång till lösenord):
1. Visa den offentliga nyckeln på din lokala maskin:
`` `bash
cat ~/.ssh/id_rsa.pub
`` `
Kopiera hela utgången (inklusive "SSH-RSA" i början och ditt användarnamn och värdnamn i slutet). Det kommer att se ut som:`ssh-rsa aaaab3nzac1yc2eaaadaqabaaabaqdf ... yourUserName@yourhostname`
2. Logga in på servern med en annan metod (t.ex. via en webbkonsol eller annan tillfällig åtkomst).
3. Skapa katalogen '.SH` (om den inte finns) och filen' Authorized_Keys ':
`` `bash
mkdir -p ~/.ssh
CHMOD 700 ~/.SSH #VITALT:Ställ in behörigheter för att begränsa åtkomsten
Touch ~/.ssh/auktoriserade_keys
CHMOD 600 ~/.SSH/auktoriserade_Keys #viktigt:Ställ in behörigheter för att begränsa åtkomsten
`` `
4. Redigera filen "Authorized_Keys" och klistra in din offentliga nyckel:
`` `bash
nano ~/.ssh/auktoriserade_keys # eller använd vi, vim, emacs, etc.
`` `
Klistra in den offentliga nyckeln som du kopierade i steg 1 i den här filen. Se till att allt är på en rad. Spara och stäng filen.
5. Viktigt:Verifiera behörigheter: Felaktiga behörigheter är en vanlig orsak till SSH -nyckelautentiseringsfel. Se till att följande:
* `~/.SSH` Katalog:` 700` (drwx ------)-Endast användaren kan komma åt.
* `~/.SSH/auktoriserade_Keys`-fil:` 600` (-rw -------)-Endast användaren kan läsa och skriva.
* Användarens hemkatalog:läsbar och körbar av användaren (t.ex. `755` eller` 700`).
3. Testa anslutningen
* Försök nu att logga in på servern utan lösenord:
`` `bash
ssh user@server_ip_address
`` `
* Om du ställer in en lösenfras på din privata nyckel, blir du ombedd att det. Om du inte ställde in en lösenfras bör du vara inloggad direkt.
4. Inaktivera lösenordsautentisering (valfritt, men rekommenderas för säkerhet)
* Viktigt:Se till att du framgångsrikt kan logga in med SSH -nycklar * innan * Inaktivera lösenordsautentisering. Om du låser dig själv måste du använda en annan metod för att återfå åtkomst (t.ex. serverns konsol).
* Redigera SSH -serverkonfigurationsfilen:
`` `bash
sudo nano/etc/ssh/sshd_config # eller använd vi, vim, emacs, etc.
`` `
* hitta och ändra dessa rader (eller lägg till dem om de inte finns):
`` `
PasswordAuthentication No
ChallengerSesponseAuthentication Nej #AlSo rekommenderas att inaktivera
Usepam nr
`` `
* Spara filen och starta om SSH -tjänsten:
`` `bash
sudo systemctl omstart sshd #or sudo service ssh omstart beroende på ditt system
`` `
felsökning
* behörigheter är felaktiga: Detta är det vanligaste problemet. Dubbelkontrollera behörigheterna i katalogen ".ssh" och "auktoriserad_keys".
* Felaktig offentlig nyckel: Se till att du kopierade * hela * offentliga nyckeln till filen 'Authorized_Keys', och att det inte finns några extra utrymmen eller linjeavbrott.
* SSH -serverkonfiguration: Granska filen `sshd_config`. Det kan finnas andra inställningar som stör viktiga autentisering (t.ex. `pubKeyAuthentication no ').
* selinux/Apparmor: Om du använder Selinux eller Apparmor kan de hindra SSH från att komma åt nyckelfilerna. Kontrollera deras loggar och justera konfigurationen efter behov.
* brandvägg: Se till att din brandvägg tillåter SSH -trafik (vanligtvis port 22, men det kan vara annorlunda).
* klientkonfiguration: Kontrollera din klients SSH -konfigurationsfil (`~/.ssh/config`) för eventuella inställningar som kan åsidosätta standardbeteendet.
Säkerhetsöverväganden
* Skydda din privata nyckel: Din privata nyckel är det viktigaste. Om det är komprometterat kan någon efterlikna dig på servern. Förvara den säkert och överväg att använda en lösenfras.
* Redra regelbundet nycklar: Det är god praxis att generera nya SSH -nycklar med jämna mellanrum och ta bort gamla från filen "Authorized_Keys".
* Använd en stark lösenfras: Om du väljer att använda en lösenfras, gör den stark och minnesvärd. En lösenordshanterare kan hjälpa.
* Begränsning av SSH -åtkomst: Använd brandväggsregler och andra säkerhetsåtgärder för att begränsa SSH -åtkomst till endast betrodda nätverk och IP -adresser.
* Inaktivera lösenordsautentisering: Som nämnts tidigare förbättrar inaktivering av lösenordsautentisering avsevärt säkerheten genom att eliminera risken för brute-force-attacker.
Genom att följa dessa steg kan du säkert och bekvämt logga in på din Linux -server utan lösenord med SSH -tangenter. Kom ihåg att prioritera säkerheten och skydda din privata nyckel.