Android

Använda ssh-konfigurationsfilen

Creating and Using an ssh config file

Creating and Using an ssh config file

Innehållsförteckning:

Anonim

Ett alternativ skulle vara att skapa ett basalias för varje fjärrserveranslutning. Men det finns en annan, mycket bättre och enklare lösning på detta problem. OpenSSH låter dig ställa in en konfigurationsfil per användare där du kan lagra olika SSH-alternativ för varje fjärrmaskin du ansluter till.

Den här guiden behandlar grunderna i SSH-klientens konfigurationsfil och förklarar några av de vanligaste konfigurationsalternativen.

förutsättningar

Vi antar att du använder ett Linux- eller macOS-system med OpenSSH-klient installerad.

SSH Config File Location

OpenSSH-konfigurationsfilen på klientsidan heter config och lagras i .ssh katalogen under användarens hemkatalog.

~/.ssh skapas automatiskt när användaren kör ssh kommandot för första gången. Om katalogen inte finns i ditt system, skapa den med kommandot nedan:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Som standard finns kanske inte SSH-konfigurationsfilen så du kan behöva skapa den med pekskommandot:

touch ~/.ssh/config

Denna fil måste vara läsbar och skrivbar endast av användaren och inte tillgänglig för andra:

chmod 600 ~/.ssh/config

SSH Config filstruktur och mönster

SSH-konfigurationsfilen har följande struktur:

Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

Innehållet i konfigurationsfilen för SSH-klienten är organiserad i strofer (avsnitt). Varje strofe börjar med Host och innehåller specifika SSH-alternativ som används vid upprättande av en anslutning till fjärr SSH-servern.

Indragning krävs inte men rekommenderas eftersom den gör filen lättare att läsa.

Host kan innehålla ett mönster eller en mellanrumsskild lista över mönster. Varje mönster kan innehålla noll eller fler tecken som inte är whitespace eller en av följande mönsterspecifikationer:

  • * - Matchar noll eller fler tecken. Till exempel matchar Host * alla värdar, medan 192.168.0.* Matchar värdar i 192.168.0.0/24 . ? - Matchar exakt en karaktär. Mönstret, Host 10.10.0.? matchar alla värdar i 10.10.0. räckvidd. ! - När den används i början av ett mönster, negerar det matchen. Till exempel är Host 10.10.0.* !10.10.0.5 alla värdar i 10.10.0.0/24 utom 10.10.0.5 .

SSH-klienten läser konfigurationsfilsstansen efter strofer, och om fler än ett mönster matchar har alternativen från den första matchande strofen företräde. Därför bör mer värdspecifika deklarationer ges i början av filen och mer allmänna åsidosättningar i slutet av filen.

Du kan hitta en fullständig lista över tillgängliga ssh-alternativ genom att skriva man ssh_config i din terminal eller genom att besöka ssh_config man-sidan.

SSH-konfigurationsfilen läses också av andra program som scp , sftp och rsync .

SSH Config File Exempel

Nu när vi har täckt det grundläggande för SSH-konfigurationsfilen, låt oss titta på följande exempel.

Vanligtvis när du ansluter till en fjärrserver via SSH skulle du ange fjärranvändarnamn, värdnamn och port. För att logga in som en användare med namnet john till en värd som heter dev.example.com på port 2322 från kommandoraden skriver du:

ssh [email protected] -p 2322

För att ansluta till servern med samma alternativ som anges i kommandot ovan genom att bara skriva ssh dev , sätter du följande rader i din "~/.ssh/config fil:

~ /.Ssh / config

Host dev HostName dev.example.com User john Port 2322

När du skriver ssh dev kommer ssh-klienten att läsa konfigurationsfilen och använda anslutningsinformationen som anges för dev värden:

ssh dev

Delat SSH-konfigurationsfilsexempel

Detta exempel ger mer detaljerad information om värdmönstret och alternativets prioritet.

Låt oss ta följande exempelfil:

Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes

  • När du skriver ssh targaryen läser ssh-klienten filen och tillämpar alternativen från den första matchen, som är Host targaryen . Sedan kontrollerar de nästa strofer en och en för ett matchande mönster. Den nästa matchande är Host * !martell (vilket betyder alla värdar utom martell ), och det kommer att använda anslutningsalternativet från den här strofen. Den sista definitionen Host * matchar också, men ssh-klienten tar bara Compression eftersom användaralternativet redan är definierat i Host targaryen strofen.

    Den fullständiga listan med alternativ som används när du skriver ssh targaryen är följande:

    HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes

    När du kör ssh tyrell de matchande ssh tyrell : Host tyrell , Host *ell , Host * !martell och Host * . Alternativen som används i detta fall är:

    HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes

    HostName 192.168.10.50 User oberyn Compression yes

    För alla andra anslutningar kommer ssh-klienten att använda de alternativ som anges i Host * !martell och Host * .

Överstyr alternativet SSH Config File

Ssh-klienten läser sin konfiguration i följande prioritetsordning:

  1. Alternativ som anges från kommandoraden. Alternativ definierade i ~/.ssh/config Alternativ definierade i /etc/ssh/ssh_config .

Host dev HostName dev.example.com User john Port 2322

och du vill använda alla andra alternativ, men att ansluta som användarrot istället för john ange helt enkelt användaren på kommandoraden:

ssh -o "User=root" dev

-F ( configfile ) låter dig ange en alternativ konfigurationsfil per användare.

För att säga till ssh klienten att ignorera alla alternativ som anges i konfigurationsfilen för ssh, använd:

ssh -F /dev/null [email protected]

Slutsats

Vi har visat dig hur du konfigurerar din user ssh config-fil. Du kanske också vill ställa in en SSH-nyckelbaserad autentisering och ansluta till dina Linux-servrar utan att ange ett lösenord.

Som standard lyssnar SSH på port 22. Ändra standard SSH-port lägger till ett extra lager av säkerhet till din server genom att minska risken för automatiska attacker.

ssh terminal