Käyttäjän oma SSH-config

SSH on yksi tärkeimmistä tavoista keskustella ja siirtyä tietokoneiden välillä. Toki nykyään voitaisiin sanoa, että työpöydän jaot ja graafiset etäyhteydet ovat usein merkityksellisempiä, mutta periaatteessa nekin käyttävät SSH:ta. Tai voivat käyttää. Mutta kun ollaan komentorivipohjaisena järjestelmän ytimessä, niin SSH on ja pysyy. SSH:n yksi vahvuus on sen käyttöoikeuksien muokattavuus. Ylläpito voi rajoittaa serveritasolla, mutta myös sallia jotain käyttäjäjille, jotka itse päättävät mitä annetuissa raameissa tekevät tai ovat tekemättä.

  • Se mitä serveri tekee vastaanottaessaan pyynnön, määrätään tiedostossa /etc/ssh/sshd_config
  • Se miten ulosmenevät yhteydet toimivat oletuksena kaikilla käyttäjillä, määrätään tiedostossa /etc/ssh/ssh_config
  • Käyttäjän omat muutokset kahden edellä olevan antamissa rajoissa asetetaan tiedostossa ~/.ssh/config

Kun annat ssh-komennon, niin

  • ensin noudatetaan sitä mikä annetaan komennossa
  • sen jälkeen se mikä on määrätty config-tiedostossa
  • viimeisenä toimitaan ssh_config mukaan

Aina se asetus pätee, joka tulee ensimmäisenä vastaan.

 

Oletuksena käyttäjällä ei ole config tiedostoa, joten se on tehtävä itse:

mkdir ~/.ssh/config && chmod 0700 ~/.ssh/config

Alias SSH-yhteyksille

Käytännössä config voi sisältää mitä tahansa sellaista, jonka käyttäjä voisi antaa normaalistikin ssh-komennon määreinä. Yksinkertaisimmillaan tiedoston voi mieltää eräänlaiseksi alias-listaksi. Itseasiassa se lienee eniten käytetty tapa hyödyntää config tiedostoa.

Minulla esimerkiksi on asetettu Raspberryyn omalle käyttäjälleni helpompi tapa kirjautua virtuaaliserverille:

Host eksis
     HostName 104.248.141.204
     User jakke

Minun ei tarvitse muistaa IP-osoitteita tai host nimiä, vaan simppeli komento ssh eksis riittää. Kun on päästävä ulkomaailmasta vaikka Raspberryn pyörittämän SSH-serverin läpi omalle sisäverkossa olevalle koneelle, niin config tiedostoon rakennetaan ProxyJump sääntö. Oma esimerkkini oli yksinkertaisin mahdollinen ja jos tarvitset mitä tahansa vipua tai määrettä ssh-komentoon, niin siitä kannattaa tehdä Host config-tiedostoon.

Jos sillä koneella, josta olet ottamassa yhteyttä serverille example.tld,

  • on kielletty salasanan käyttö kirjautumisessa ssh_config tiedostossa,
  • mutta sinulla ei ole SSH-avainta serverille example.tld,
  • niin voit ohittaa kieltosuosituksen laittamalla config-tiedostoon tuolle hostille rivin PasswordAuthentication yes
  • ja kirjautuminen onnistuukin salasanalla (jos example.tld on sallinut salasanat tiedostossa sshd_config)

Salasanan käyttö oli hölmö esimerkki, mutta ymmärtänet mistä on kysymys. Useammin se saattaa tulla vastaan vaikka pakkauksen sallivan Compression ja CompressionLevel kanssa, kun ylläpitäjä on ottanut sen oletuksena pois päältä lähteviltä yhteyksiltä, koska se kuormittaa, mutta tarvitset sitä itse johonkin isompaan siirtoon.

ssh_config ohitukset

Salasanan pakottaminen on yksi tapa ohittaa ssh_config tiedoston oletusarvot – itse puhuisin mieluummin järjestelmänvalvojan suosituksista. Mutta samat asiat voi myös asettaa omassa config-tiedostossa defaulteiksi ja ohittaa ne sitten tarpeen vaatiessa host-määrittelyissä. Tuossa kikkailussa on jotain järkeä vain silloin kun tekee jotain säännönmukaisesti vastoin ssh_config ehdottamia asetuksia ja vain jossain tekee asiat samalla tavalla.

Omassa perheen käytössä olevassa sisäverkossa kikkailut asetusten välillä sen mukaan ovatko ne config tai ssh_config tiedostossa ovat aika turhia. Tai ainakin minulla ovat olleet. Riittää, että asettaa hostien vaatimat perusasiat paikalleen.

Mutta jos sen tekee, niin vastaavalla salasanaehdolla config tiedoston alkuun laitettaisiin oletukseksi SSH-avaimet, mutta määrätylle hostille pakotettaisiinkin salasanan käyttö:

PreferredAuthentications publickey

Host koti
   HostName 11.22.33.44
   User jakke

Host koti-root
   HostName 11.22.33.44
   User root
   PasswordAuthentication yes
   PreferredAuthentications password

Nyt kun soittaisin kotiin omalla tunnuksellani, niin SSH-avain olisi käytössä. Mutta root-tunnus vaatisi salasanan.

 

Et pysty koskaan vaikuttamaan mitä vastaanottava serveri sallii tai ei, mutta saat config tiedostolla ohitettua oman serverisi ylläpitäjän suositukset ulosmenevään liikenteeseen sekä laittamaan usein käytetyt komennot config-tiedostoon käytettäväksi helpommassa muodossa.

Voit lukea täältä lisää ssh_config ja siten myös .ssh/config asetuksista.

Jakke Lehtonen

Teen B2B-markkinoille sisällöntuottoa sekä UX-testauksia. Samaan liittyy myös koulutukset yrityksille ja webmaailman kanssa muutoin painiville. Serverien sielunelämää on joutunut ohessa opettelmaan. Toinen puoli toiminnasta on koirien ravitsemuksen ja ruokinnan suunnittelua sekä varsinkin omistajien kouluttamista hoitamaan koiriaan oikein ja vielä paremmin. Profiili: Jakke Lehtonen

Keskustele foorumilla Meta/KATISKA