SSH

Peruskäyttö

ssh kayttaja@palvelin
ssh -p 2222 kayttaja@palvelin    # muu kuin oletusportti
ssh -i ~/.ssh/oma_avain kayttaja@palvelin
ssh kayttaja@palvelin "komento etäpalvelimella"   # aja yksi komento ja poistu

Avainparin luonti

ssh-keygen -t ed25519 -C "kommentti"
ssh-keygen -t ed25519 -f ~/.ssh/erillinen_avain -N ""   # ei salasanaa, esim. CI:tä varten
ssh-copy-id kayttaja@palvelin   # vie julkinen avain palvelimelle
ssh-add ~/.ssh/oma_avain         # lisää avain käynnissä olevaan ssh-agenttiin
ssh-add -l                       # listaa agentin avaimet

~/.ssh/config — pikakutsut

Host lyhytnimi
  HostName palvelin.esimerkki.fi
  User kayttaja
  Port 22
  IdentityFile ~/.ssh/oma_avain

Tämän jälkeen riittää ssh lyhytnimi.

Hyppypalvelimen (jump host) kautta yhdistäminen

Host sisaverkko
  HostName 10.0.0.5
  User kayttaja
  ProxyJump hyppypalvelin

tai suoraan komentoriviltä: ssh -J hyppypalvelin kayttaja@10.0.0.5.

Yhteyden kierrätys (multiplexing)

Nopeuttaa perättäisiä yhteyksiä samaan palvelimeen käyttämällä yhtä taustayhteyttä uudelleen:

Host *
  ControlMaster auto
  ControlPath ~/.ssh/sockets/%r@%h-%p
  ControlPersist 10m

Tiedostojen siirto

scp tiedosto.txt kayttaja@palvelin:/polku/
scp -r kansio/ kayttaja@palvelin:/polku/            # koko kansio
rsync -avz kansio/ kayttaja@palvelin:/polku/kansio/
sshfs kayttaja@palvelin:/polku/ ~/paikallinen/liitos/   # liitä etähakemisto tiedostojärjestelmään

Tunnelointi

ssh -L 8080:localhost:80 kayttaja@palvelin   # paikallinen portti etäpalveluun
ssh -R 9000:localhost:3000 kayttaja@palvelin  # etäpalvelimen portti paikalliseen palveluun
ssh -D 1080 kayttaja@palvelin                # SOCKS-proxy
ssh -N -L 8080:localhost:80 kayttaja@palvelin  # tunneli ilman komentotulkkia

X11-forwarding

ssh -X kayttaja@palvelin    # graafisten sovellusten ikkunat omalle koneelle
ssh -Y kayttaja@palvelin    # "luotettu" X11-forwarding (vähemmän rajoituksia)

Agentin välitys (agent forwarding)

ssh -A kayttaja@palvelin

Sallii etäpalvelimen käyttää paikallista ssh-agenttiasi (esim. git-pushiin toiselle palvelimelle sieltä käsin) ilman että yksityinen avain kopioidaan sinne. Käytä vain luotettuihin palvelimiin, koska palvelimen root voi väärinkäyttää agenttiasi sen ollessa auki.

Vianetsintä

ssh -v kayttaja@palvelin        # tulostaa yhteyden muodostuksen vaiheittain (-vv, -vvv lisää)
ssh-keyscan -H palvelin         # hae palvelimen host key tunnetuksi
ssh-keygen -R palvelin          # poista vanhentunut host key known_hosts-tiedostosta