Hur man Hanterar en SSH-Config-Fil i Windows och Linux

0
42

Din SSH-config-fil kan du ange särskilda inställningar för varje SSH värd som gör att ansluta till den mottagande mycket lättare. Genom att definiera många av dessa vanligt, eller ovanligt, fastigheter inom de fil, det eliminerar behovet av att komma ihåg den här parametern ställer in varje och varje gång en anslutning behövs.

Definiera en SSH-Anslutning

Om filen ~/.ssh/config inte finns, kan du gå vidare och skapa detta nu. Typiskt, här filen finns i en .ssh “dolda” katalog, dolda bara för att de flesta operativsystem inte visar kataloger föregås av en .. Även denna katalog är vanligtvis finns i ett hem katalogen, eller hem katalogen för den användare som kör ssh, därav ~ notation, som betecknar hemkatalog.

Det är viktigt att hålla ett öga på behörigheter inom .ssh-mappen. De flesta SSH-klienter vill att filerna ska vara läge 600 i denna mapp. Om och referera till den här mappen från Windows Delsystem för Linux, bör du se till att chmod 600 ~\.ssh\*

Så, vad gör en enkel SSH-anslutning knappt kommer att se ut i filen? Ett exempel på en enkel konfiguration nedan.

Värd min-ssh-värd
HostName 10.0.0.5
Port 22
Användaren myuser

Som du kan berätta från ovanstående konfiguration, detta är ungefär lika grundläggande som man kan få. I själva verket kan du utelämna den Port som det inte är absolut nödvändigt eftersom 22 är standard SSH port. Genom att definiera detta sammanhang, på kommandoraden kan vi helt enkelt göra följande.

ssh-min-ssh-värd

Anslutningen kommer vanligtvis att fråga efter ett lösenord, som en SSH-anslutning bör inte vara oskyddade.

Offentliga/Privata Nycklar

Nästan varje SSH handledning eller setup-guide det kommer oftast hänvisning offentliga/privata nycklar på en eller annan punkt. Detta är det bästa sättet att installera en SSH-anslutning. I stället för ett lösenord som kan vara hackat eller gissade, att det är nödvändigt att faktiskt få nyckeln fil. Den här guiden är inte att gå in på hur man skapar dem, så låt oss anta att en uppsättning finns redan och är rätt konfigurerad. Hur ska vi berätta för våra värd-konfiguration för att använda den här filen?

Värd min-ssh-värd
HostName 10.0.0.5
Port 22
Användaren myuser
IdentityFile ~/.ssh/id_ed25519_myuser
IdentitiesOnly ja

Det finns två nya kommandon som vi har infört här. Den IdentityFile och IdentitiesOnly kommandon. Först måste vi berätta för SSH där viktiga filen, i detta fall vi har sparat filen i .ssh-katalogen (vara försiktig med tillstånd). För det andra, vi har definierat en tagg som heter IdentitiesOnly. Detta kommer att tala om SSH för att inte prova varje identitet filen i mappen, men bara en är definierade. Som standard kommer SSH att gå igenom och prova varje identitet filen tills den hittar rätt. Ofta detta kommer att leda till en “Alltför många autentiseringsfel för användaren myuser” på målet servern om det finns en hel del av identiteter.

Komplexa Konfigurationer

Det finns många scenarier som vi kan täcka i denna artikel, men låt oss gå igenom några vanliga och användbara.

ForwardAgent

Vad händer om du har ett scenario där du har öppnat en SSH-anslutning till ett mål server, som sedan måste göra ytterligare en SSH-anslutning till en andra server från det ursprungliga målet server? Du kanske tror att du kommer att behöva för att lagra de samma SSH-nycklar på att målet server för att göra detta nästa hopp. Det är ett kommando, med det passande namnet ForwardAgent, som tillåter dig att “framåt” – din lokala nycklarna till nästa server i hop.

Värd min-ssh-värd
HostName 10.0.0.5
Port 22
Användaren myuser
IdentityFile ~/.ssh/id_ed25519_myuser
IdentitiesOnly ja
ForwardAgent ja

ProxyJump

Liknande ForwardAgent, ofta är det som behövs för att öppna en sekundär SSH-anslutning direkt genom en första (eller andra) mål. Många gånger beror detta på att en maskin kan vara brandvägg är avstängd från internet, men har en anslutning till en “hoppa-rutan” som sedan gör att man kan öppna en anslutning på brandvägg server. Med utgångspunkt i SSH version 7.3 och högre, ProxyJump kommando gör det möjligt för oss att enkelt åstadkomma detta.

Värd min-ssh-värd
HostName 10.0.0.5
Port 22
Användaren myuser
IdentityFile ~/.ssh/id_ed25519_myuser
IdentitiesOnly ja
ForwardAgent ja
ProxyJump myuser@10.0.0.6:22,myuser2@10.0.0.7:10005

Som framgår ovan finns det två servrar här. Ursprungligen SSH-anslutning knappt kommer att gå till 10.0.0.5 men sedan omedelbart öppna en anslutning till 10.0.0.6, så kommer det till slut öppna en anslutning med en annan användare och port för att 10.0.0.7.

SSH-Tunnel Proxy

Vad händer om du har behov av att inrätta en SOCKSv5 tunnel? Detta är ganska lätt att använda config-filen. Vi håller på att införa tre nya kommandon här, DynamicForward, ControlMaster, och ControlPath.

Värd min-ssh-värd
HostName 10.0.0.5
Port 22
Användaren myuser
IdentityFile ~/.ssh/id_ed25519_myuser
IdentitiesOnly ja
DynamicForward 8080
ControlMaster auto
ControlPath ~/.ssh/%r@%h:%p

Den DynamicForward kommandot är den port som vi faktiskt ser till proxy över våra SSH-anslutning, till exempel port 8080. ControlMaster är inställd på auto, vilket innebär att om det finns en förbindelse, för att sedan använda det, men om inte skapa en ny. Slutligen ControlPath anger platsen för den faktiska uttaget filen. I det här fallet, det är med hjälp av namngivning format %r@%h:%p vilket motsvarar myuser@10.0.0.5:22 i denna anslutningar fall.

Slutsats

Det finns en hel del makt i konfigurationsfil för SSH. Långt mer komplext exempel kan definieras, utöver den enkel att definiera många olika datorer inom en och samma plats. Genom att göra så, inte bara är den värd-anslutningar väl dokumenterade, men de möjliggör snabb och enkel tillgång på kommandoraden. Om du väljer att lägga den här filen under versionskontroll, du lägger till möjligheten att ha en löpande historia av dina värdar och potentiellt spara dig själv en stor huvudvärk i framtiden. Som du kan berätta, SSH-config-fil som gör att fastställa SSH är värd lätt!