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
- määra korduvale ühendusele failis
~/.ssh/configalias - macOS-is lase Apple'i võtmehoidjal (Keychain) võtmefraas meelde jätta
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 |
| millised võtmefailid on olemas | 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 failid |
| lisa võti macOS-i võtmehoidjasse | /usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_ed25519 | võtmefraas salvestatakse võtmehoidjasse |
| kasuta aliast | 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. Kontrolli uut sõrmejälge serveri haldurilt või teisest usaldusväärsest kanalist enne kinnitamist; pelgalt õige aadress ei tõenda serveri ehtsust.
Tüüpilised algaja vead
- aetakse segi privaatvõti ja avalik võti
- kirjutatakse olemasolev võti kogemata üle
- arvatakse, et Apple'i võtmehoidja asendab
~/.sshvõtmefailid - lisatakse serverisse privaatvõti, kuigi lisada tuleb ainult
.pubfail - seadistatakse keeruline pordi- või agendiedastus enne, kui tavaline sisselogimine töötab
- unustatakse, et faili
~/.ssh/configaliaseid saavad kasutada kascp,rsyncja Git
Esimene ühendus
Kõigepealt proovi kõige tavalisemat kuju:
ssh kasutaja@server.example.org
Pärast sisselogimist käivad käsud kaugmasina kohta. Tagasi kohalikku shelli saad käsuga exit.
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 aliased 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: määra privaatvõtmele võtmefraas. See kaitseb võtit ka siis, 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, kasuta käsus vastavat failinime.
macOS: võtmehoidja ja ssh-agent
macOS-is on kaks eri asja:
ssh-agenthoiab võtmeid jooksva kasutusseansi ajal mälus- Apple'i võtmehoidja (Keychain) saab hoida privaatvõtme võtmefraasi, et sa ei peaks seda iga kord uuesti sisestama
Võtmehoidja ei asenda võtmefaile. Privaatvõti on endiselt näiteks ~/.ssh/id_ed25519; võtmehoidja aitab selle võtmefraasi hallata.
Kasuta Apple'i tööriista /usr/bin/ssh-add: näiteks Homebrew kaudu paigaldatud samanimeline programm ei pruugi Apple'i valikuid toetada. Lisa võti agendile ja salvesta võtmefraas võtmehoidjasse:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Kui võtmefraas on juba võtmehoidjas ja tahad võtmed agendile laadida:
/usr/bin/ssh-add --apple-load-keychain
Kui tahad võtme ainult jooksvast agendist eemaldada:
ssh-add -d ~/.ssh/id_ed25519
Kui tahad eemaldada ka võtmehoidjasse salvestatud võtmefraasi, kasuta eemaldamisel Apple'i võtmehoidja valikut:
/usr/bin/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: aliased ja püsiseaded
Kui ühendud sama serveriga korduvalt, määra seadistusfailis 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 rida UseKeychain, sest Linuxi OpenSSH ei pruugi Apple'i valikut tunda. Nii töötab sama seadistusfail paremini 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 aliasega
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 seadistusfaili 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:
- pordiedastus (
port forwarding):ssh -L ... - agendiedastus (
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 aliased 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
/usr/bin/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 failis ~/.ssh/config määratud aliast ja macOS-is Apple'i võtmehoidjat
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 vajadusel/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_ed25519macOS: salvesta võtmefraas võtmehoidjassessh-copy-id -i ~/.ssh/id_ed25519.pub kasutaja@server.example.orglisa avalik võti serverissessh opik-serverkasuta seadistusfaili aliastssh -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 agentiUseKeychainvõtmefraas macOS-i võtmehoidjasIdentitiesOnly yeskasuta nimetatud võtit