Mustand: sisu ei ole veel tehniliselt ega keeleliselt täielikult kontrollitud ega toimetatud.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Kauglogimine ja SSH, mis kuulub osasse Osa III: Failid, võrk ja süsteemitöö.

Kauglogimine ja SSH

SSH on turvaline viis logida teise masinasse, käivitada seal käske ja liigutada faile. Sama ühendusloogikat kasutavad sageli ka scp, rsync ja Git.

Loogika

SSH töövoog liigub tavaliselt nii:

  1. proovi parooli või olemasoleva võtmega tavalist sisselogimist
  2. kontrolli, kas sul on võtmepaar juba olemas
  3. loo uus võti ainult siis, kui seda on vaja
  4. lisa avalik võti serverisse
  5. pane korduv ühendus ~/.ssh/config faili alias'e alla
  6. macOS-is lase Keychainil võtme paroolifraasi meeles pidada

Kõige tähtsam piir on lihtne: privaatvõti jääb sinu arvutisse, avalik võti läheb serverisse.

Kiire orientiir

KüsimusKäsk või failMida näed või teed
kas saan sissessh kasutaja@server.example.orgkaugmasina viip või veateade
mis võtmed failina olemas onls -la ~/.sshid_ed25519, id_ed25519.pub jms
mis võtmed agendis onssh-add -lvõtmete sõrmejäljed või teade, et agent on tühi
loo uus võtissh-keygen -t ed25519privaat- ja avaliku võtme fail
lisa võti macOS Keychainissh-add --apple-use-keychain ~/.ssh/id_ed25519paroolifraas salvestatakse Keychaini
kasuta alias'tssh opik-serverühendus ~/.ssh/config kirje järgi

Esmakordsel ühendusel küsib SSH sageli serveri sõrmejälje kinnitamist. See on serveri tuvastus, mitte sinu kasutajavõti. Tundmatu serveri puhul kontrolli sõrmejälge usaldusväärsest allikast.

Tüüpilised algaja vead

  • aetakse segi privaatvõti ja avalik võti
  • kirjutatakse olemasolev võti kogemata üle
  • arvatakse, et Apple Keychain asendab ~/.ssh võtmefailid
  • lisatakse serverisse privaatvõti, kuigi lisada tuleb ainult .pub fail
  • tehakse keeruline ssh -L või agent forwarding enne, kui tavaline sisselogimine töötab
  • unustatakse, et ~/.ssh/config alias'e saavad kasutada ka scp, rsync ja Git

Esimene ühendus

Kõigepealt proovi kõige tavalisemat kuju:


ssh kasutaja@server.example.org

Kui port ei ole tavaline 22, lisa port:


ssh -p 2222 kasutaja@server.example.org

Ühekordse kaugkäsu saab anda nii:


ssh kasutaja@server.example.org 'hostname && uptime'

Kui see veel ei tööta, ära alusta võtmete ümbertegemisest. Enne kontrolli kasutajanime, hostinime, porti ja veateadet.

Kas sul on võtmed juba olemas?

Vaata kõigepealt oma ~/.ssh kataloogi.


ls -la ~/.ssh

Tüüpilised failid:

FailTähendus
id_ed25519privaatvõti; ära saada kellelegi
id_ed25519.pubavalik võti; see lisatakse serverisse
configühenduste alias'ed ja seaded
known_hostsserverite sõrmejäljed
authorized_keysserveris lubatud avalikud võtmed

Kontrolli võtme sõrmejälge:


ssh-keygen -lf ~/.ssh/id_ed25519.pub

Kontrolli, mis võtmed on praegu ssh-agent-is:


ssh-add -l
ssh-add -L

ssh-add -l näitab sõrmejälgi. ssh-add -L näitab agendis olevate võtmete avalikke ridu. Kui agent on tühi, ei tähenda see, et võtmefaile pole olemas; see tähendab ainult, et agent ei hoia neid praegu mälus.

Uue võtme loomine

Ära kirjuta olemasolevat võtit üle. Kui ~/.ssh/id_ed25519 on juba olemas ja kasutusel, kasuta seda või loo eraldi nimega võti.

Tavaline uus võti:


ssh-keygen -t ed25519 -C 'kasutaja@arvuti'

Kui tahad eraldi õpiku või serveri võtit:


ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_opik -C 'opik-server'

Soovitus: pane privaatvõtmele paroolifraas. Siis kaitseb võtmefaili ka see, kui fail satub kogemata valesse kohta.

Õigused peavad olema kitsad:


chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

Kui kasutasid teise nimega võtit, asenda käsus failinimi vastavaks.

macOS: Keychain ja ssh-agent

macOS-is on kaks eri asja:

  • ssh-agent hoiab võtmeid jooksva kasutusseansi ajal mälus
  • Apple Keychain saab hoida privaatvõtme paroolifraasi, et sa ei peaks seda iga kord uuesti sisestama

Keychain ei asenda võtmefaile. Privaatvõti on endiselt näiteks ~/.ssh/id_ed25519; Keychain aitab selle paroolifraasi hallata.

Lisa võti agendile ja salvesta paroolifraas Keychaini:


ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Kui paroolifraas on juba Keychainis ja tahad võtmed agendile laadida:


ssh-add --apple-load-keychain

Kui tahad võtme ainult jooksvast agendist eemaldada:


ssh-add -d ~/.ssh/id_ed25519

Kui tahad eemaldada ka Keychaini salvestatud paroolifraasi, lisa eemaldamisel Apple'i Keychaini valik:


ssh-add --apple-use-keychain -d ~/.ssh/id_ed25519

Vanemates macOS-i juhendites näeb vahel käske ssh-add -K ja ssh-add -A. Tänapäevasem ja selgem kuju on kasutada --apple-use-keychain ja --apple-load-keychain.

Kontrolli pärast:


ssh-add -l

Kui ssh-add ütleb, et agenti ei saa ühendada, ava uus terminaliaken ja proovi uuesti. macOS-is käivitab graafiline kasutajaseanss agendi tavaliselt ise.

~/.ssh/config: alias'ed ja püsiseaded

Kui ühendud sama serveriga korduvalt, tee config-faili alias.


Host opik-server
    HostName server.example.org
    User kasutaja
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Pärast seda töötavad lühemad käsud:


ssh opik-server
scp fail.txt opik-server:/tmp/
rsync -av kaust/ opik-server:/tmp/kaust/

IdentitiesOnly yes on kasulik siis, kui agendis on palju võtmeid. See ütleb SSH-le, et selle hosti puhul kasuta eelkõige siin nimetatud võtit.

macOS-i mugav plokk võib olla selline:


Host *
    IgnoreUnknown UseKeychain
    AddKeysToAgent yes
    UseKeychain yes

Host opik-server
    HostName server.example.org
    User kasutaja
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

IgnoreUnknown UseKeychain peab olema enne UseKeychain rida, sest Linuxi OpenSSH ei pruugi Apple'i UseKeychain valikut tunda. Nii saab sama config fail olla talutavam mitmes süsteemis.

Config-faili õigused:


chmod 600 ~/.ssh/config

Avaliku võtme lisamine serverisse

Serverisse lisatakse avalik võti, mitte privaatvõti.

Kui ssh-copy-id on olemas:


ssh-copy-id -i ~/.ssh/id_ed25519.pub kasutaja@server.example.org

Kui ssh-copy-id puudub, kuva avalik võti:


cat ~/.ssh/id_ed25519.pub

macOS-is saad selle lõikelauale panna nii:


pbcopy < ~/.ssh/id_ed25519.pub

Seejärel lisa see avalik rida serveris faili ~/.ssh/authorized_keys. Serveris peavad õigused olema tavaliselt:


chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Failide kopeerimine sama alias'ega

Kui ~/.ssh/config alias töötab ssh-iga, töötab see sageli ka kopeerimisel.


scp fail.txt opik-server:/tmp/
rsync -av kaust/ opik-server:/tmp/kaust/

Korduva töö puhul eelista rsync-i ja proovi enne:


rsync -avn kaust/ opik-server:/tmp/kaust/

Veaotsing

Kõige kasulikum esimene diagnostikakäsk on:


ssh -v opik-server

See näitab:

  • millist config-kirjet kasutatakse
  • millist hosti ja porti proovitakse
  • milliseid võtmeid pakutakse
  • kas viga on ühenduses, serveri sõrmejäljes või autentimises

Kui väljund on liiga pikk, otsi sealt ridu Offering public key, Authentications that can continue ja Permission denied.

Mis jääb hilisemaks

SSH-l on ka võimsamad töövõtted:

  • port forwarding: ssh -L ...
  • agent forwarding: ssh -A ...
  • hüppemasinad: ProxyJump
  • püsivad ühendused: ControlMaster

Need on kasulikud, aga tulevad pärast seda, kui tavaline sisselogimine, võtmed ja ~/.ssh/config alias'ed on selged.

Minitest

  1. Vaata, kas sul on ~/.ssh kataloog ja millised võtmefailid seal on.
  2. Selgita, kumb on privaatvõti ja kumb avalik võti.
  3. Kontrolli, kas ssh-agent hoiab praegu mõnd võtit.
  4. Kirjuta näidis Host opik-server plokk ~/.ssh/config jaoks.
  5. Selgita, mida teeb macOS-is ssh-add --apple-use-keychain.
  6. Kirjuta ühe lausega, miks UseKeychain ei tähenda, et võti oleks serverisse lisatud.

Lisalugemine

Selle teema usaldusväärsemad viited leiad lisast Lisa E: usaldusväärsed viited ja lisalugemine.

Peatüki täisspikker

Praktiline kasutus

Eesmärk

tee SSH korduvkasutatavaks: kontrolli olemasolevaid võtmeid, lisa avalik võti serverisse, kasuta ~/.ssh/config alias't ja macOS-is Keychaini

Põhirada

  • ssh kasutaja@server.example.orgproovi tavalist sisselogimist
  • ls -la ~/.sshvaata olemasolevaid võtmefaile
  • ssh-add -lvaata agendis olevaid võtmeid
  • ssh-keygen -t ed25519 -C 'kasutaja@arvuti'loo võti ainult vajadusel
  • ssh-add --apple-use-keychain ~/.ssh/id_ed25519macOS: salvesta paroolifraas Keychaini
  • ssh-copy-id -i ~/.ssh/id_ed25519.pub kasutaja@server.example.orglisa avalik võti serverisse
  • ssh opik-serverkasuta config-alias't
  • ssh -v opik-serverdiagnostika

Olulised failid ja mõisted

  • id_ed25519privaatvõti; ära jaga
  • id_ed25519.pubavalik võti serverisse
  • ~/.ssh/configühenduse alias
  • ~/.ssh/authorized_keyslubatud võtmed
  • known_hostsserverite sõrmejäljed
  • AddKeysToAgentlisa võtmed agenti
  • UseKeychainmacOS paroolifraasi hoidmine
  • IdentitiesOnly yeskasuta nimetatud võtit