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:
- proovi parooli või olemasoleva võtmega tavalist sisselogimist
- kontrolli, kas sul on võtmepaar juba olemas
- loo uus võti ainult siis, kui seda on vaja
- lisa avalik võti serverisse
- pane korduv ühendus
~/.ssh/configfaili alias'e alla - 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üsimus | Käsk või fail | Mida näed või teed |
|---|---|---|
| kas saan sisse | ssh kasutaja@server.example.org | kaugmasina viip või veateade |
| mis võtmed failina olemas on | ls -la ~/.ssh | id_ed25519, id_ed25519.pub jms |
| mis võtmed agendis on | ssh-add -l | võtmete sõrmejäljed või teade, et agent on tühi |
| loo uus võti | ssh-keygen -t ed25519 | privaat- ja avaliku võtme fail |
| lisa võti macOS Keychaini | ssh-add --apple-use-keychain ~/.ssh/id_ed25519 | paroolifraas salvestatakse Keychaini |
| kasuta alias't | ssh 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
~/.sshvõtmefailid - lisatakse serverisse privaatvõti, kuigi lisada tuleb ainult
.pubfail - tehakse keeruline
ssh -Lvõi agent forwarding enne, kui tavaline sisselogimine töötab - unustatakse, et
~/.ssh/configalias'e saavad kasutada kascp,rsyncja 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:
| Fail | Tähendus |
|---|---|
id_ed25519 | privaatvõti; ära saada kellelegi |
id_ed25519.pub | avalik võti; see lisatakse serverisse |
config | ühenduste alias'ed ja seaded |
known_hosts | serverite sõrmejäljed |
authorized_keys | serveris 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-agenthoiab 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
- Vaata, kas sul on
~/.sshkataloog ja millised võtmefailid seal on. - Selgita, kumb on privaatvõti ja kumb avalik võti.
- Kontrolli, kas
ssh-agenthoiab praegu mõnd võtit. - Kirjuta näidis
Host opik-serverplokk~/.ssh/configjaoks. - Selgita, mida teeb macOS-is
ssh-add --apple-use-keychain. - Kirjuta ühe lausega, miks
UseKeychainei 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 sisselogimistls -la ~/.sshvaata olemasolevaid võtmefailessh-add -lvaata agendis olevaid võtmeidssh-keygen -t ed25519 -C 'kasutaja@arvuti'loo võti ainult vajaduselssh-add --apple-use-keychain ~/.ssh/id_ed25519macOS: salvesta paroolifraas Keychainissh-copy-id -i ~/.ssh/id_ed25519.pub kasutaja@server.example.orglisa avalik võti serverissessh opik-serverkasuta config-alias'tssh -v opik-serverdiagnostika
Olulised failid ja mõisted
id_ed25519privaatvõti; ära jagaid_ed25519.pubavalik võti serverisse~/.ssh/configühenduse alias~/.ssh/authorized_keyslubatud võtmedknown_hostsserverite sõrmejäljedAddKeysToAgentlisa võtmed agentiUseKeychainmacOS paroolifraasi hoidmineIdentitiesOnly yeskasuta nimetatud võtit