
Praktilised näited , mis viivad teie kaug-süsteemi administraatori oskused uuele tasemele. Kommandid ja näpunäited aitavad mitte ainult kasutada SSH, vaid samuti osavamalt navigeerida läbi võrgu.
Mõnede nippide teadmine ssh on kasulik igale süsteemiadministraatorile, võrgutehnoloogile või turbeeksperdile.
Praktilised näited SSH
Esiteks alused
SSH käsurea analüüs
Järgmises näites kasutatakse tavalisi parameetreid, mida sageli kasutatakse kaugsüsteemiga ühendamisel SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver-v: silumisinfo väljund on eriti kasulik autentimisprobleemide analüüsimisel. Seda saab kasutada mitu korda, et kuvada täiendavat teavet.- p 22: ühenduse port SSH kaugsüsteemiga. 22 pole tingimata vaja määrata, kuna see on vaikimisi väärtus, kuid kui protokoll on mingil muul pordil, siis määrame selle parameetriga-p. Kuulamisport määratakse failissshd_configvormingusPort 2222.-C: kokkusurutud ühendus. Kui sul on aeglane kanal või vaatad palju teksti, võib see ühendust kiiruselt parandada.neo@: @ ees olev rida näitab kasutajanime, mida kasutatakse kaugsüsteemis autentimiseks. Kui seda ei määrata, kasutatakse vaikimisi hetkel sisse logitud kasutajanime (~$ whoami). Kasutajat saab samuti määrata parameetriga-l.remoteserver: hostinimi, millega ühendust luuaksessh, это может быть полное доменное имя, IP-адрес или любой хост в локальном файле hosts. Для подключения к хосту, который поддерживает и IPv4, и IPv6, можно добавить в командную строку параметр-4või-6для правильного резолвинга.
Все вышеперечисленные параметры являются необязательными, кроме remoteserver.
Использование файла конфигурации
Хотя многие знакомы с файлом sshd_config, есть ещё файл конфигурации клиента для команды ssh. Значение по умолчанию ~/.ssh/config, но его можно определить как параметр для опции -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_keyВ приведённом выше примерном файле конфигурации ssh две записи хоста. Первая обозначает все хосты, для всех применяется параметр конфигурации Port 2222. Вторая говорит, что для хоста remoteserver следует использовать другое имя пользователя, порт, FQDN и IdentityFile.
Файл конфигурации может сэкономить много времени на ввод символов, позволяя автоматически применять продвинутую конфигурацию при подключении к конкретным хостам.
Копирование файлов по SSH с помощью SCP
SSH klient kaasneb kahe mugava tööriistaga, et faile kopeerida krüpteeritud SSH ühenduse kaudu. Allpool on näide standardsetest scp ja sftp käskude kasutamist. Pange tähele, et paljusid SSH parameetreid rakendatakse ka nendes käskudes.
localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.pngSelles näites on fail mypic.png kopeeritud remoteserver kausta /media/data ja ümbernimetatud mypic_2.png.
Ärge unustage portide parameetri erinevust. Paljud, kes käivitavad scp käsklusribalt, komistavad selle üle. Siin on porti parameeter -P, mitte -p, nagu SSH klienti puhul! Sa võid unustada, aga ära muretse, kõik unustavad.
Neile, kes tunnevad konsooli ftp, tunduvad paljud käsklused sarnased sftp. Sa võid teha push, put ja ls, nagu süda soovib.
sftp neo@remoteserverPraktilised näited
Paljusid neist näidetest on võimalik saavutada erinevate meetoditega. Nagu meie ja näidetes, eelistatakse praktilisi näiteid, mis lihtsalt teevad seda, milleks nad on mõeldud.
1. SSH socks-proksi
SSH Proxy funktsioon on oma nime tõttu esikohal. See on palju võimsam, kui paljud arvavad, ja annab juurdepääsu igasugustele süsteemidele, millele kaugserveril on juurdepääs, kasutades praktiliselt igasuguseid rakendusi. SSH klient saab tunnelida liiklust SOCKS-proxy kaudu ühe lihtsa käsuga. Oluline on mõista, et kaug-süsteemidest saadetud liiklus jääb kaugserverilt, nagu on märgitud veebiserveri logidesse.
localhost:~$ ssh -D 8888 user@remoteserver
localhost:~$ netstat -pan | grep 8888
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 23880/sshSiin käivitame SOCKS-proxy TCP-pordil 8888, teine käsk kontrollib, et port on aktiivne ja kuulab. 127.0.0.1 näitab, et teenus töötab ainult localhost'is. Me saame kasutada veidi teistsugust käsku, et kuulata kõiki liideseid, sealhulgas ethernet või wifi, mis võimaldab teistel rakendustel (nt brauserid) meie võrgus proxy-teenusele SSH SOCKS-proxy kaudu ühenduda.
localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserverNüüd saame seadistada brauseri SOCKS-proxy kaudu ühenduse loomiseks. Firefoxis valige Seaded | Üldine | Võrgu seaded. Määrake IP-aadress ja port ühenduse loomiseks.

Pange tähele vormi alumises osas olevat valikut, et DNSi päringud käiksid ka SOCKS-proksi kaudu. Kui kasutate veebiliikluse krüpteerimiseks proksiserverit, siis soovite tõenäoliselt seda valikut valida, et DNSi päringud tunneldataks SSH-ühenduse kaudu.
SOCKS-proksi aktiveerimine Chrome'is
Chrome'i käivitamine kindlate käsurea parameetritega aktiveerib SOCKS-proksi ning ka DNS-päringute tunneldamise brauserist. Usalda, kuid kontrolli. Kasutage et veenduda, et DNS-päringud ei ole enam nähtavad.
localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"Muude rakenduste kasutamine proksiga
Pange tähele, et paljud teised rakendused võivad samuti kasutada SOCKS-proksit. Veebibrauser on neist lihtsalt kõige populaarsem. Mõnedel rakendustel on proksiserveri aktiveerimise seadistused. Teised vajavad veidi abi abiprogrammiga. Näiteks, võimaldab käivitada Microsoft RDP ja teised läbi SOCKS-proksi.
localhost:~$ proxychains rdesktop $RemoteWindowsServerSOCKS-proksi konfiguratsiooniparameetrid määratakse proxychains'i konfiguratsioonifailis.
Näpunäide: kas kasutate Linuxist Windowsi kaugdesktopi? Proovige klienti . See on uuem versioon kui
rdesktop, millel on palju sujuvam interaktsioon.
SSH kasutamine socks-proxyna
Olete kohvikus või hotellis — ja peate kasutama üsna ebastabiilset WiFi. Käivitage oma sülearvutis kohalikult ssh-proxy ja looge ssh-tunnel oma koduvõrku kohalikule Raspberry Pi-le. Kasutades brauserit või muid rakendusi, mis on määratud socks-proxyks, saame ligi pääseda mis tahes võrgu teenustele oma koduvõrgus või internetti ligipääseda läbi koduse ühenduse. Kõik teie sülearvuti ja koduserveri vahel (WiFi ja interneti kaudu koju) on krüpteeritud SSH-tunneli kaudu.
2. SSH-tunnel (portide edastamine)
Lihtsaimal kujul SSH-tunnel avab lihtsalt port teie kohalikus süsteemis, mis ühendub teise pordi kaudu tunneliteisel lõpus.
localhost:~$ ssh -L 9999:127.0.0.1:80 user@remoteserver Analüüsime parameetrit -L. Seda saab esitada kui kohaliku kuulamise poole. Nii et ülaltoodud näites kuulab port 9999 localhost'i poole ja suunatakse port 80 kaudu remoteserver'ile. Pange tähele, et 127.0.0.1 viitab localhost'ile eemaloleval serveril!
Liigume järgmisele tasemele. Järgmises näites on kuulamisport ühendatud teiste kohaliku võrgu sõlmidega.
localhost:~$ ssh -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserverNendes näidetes ühendame me porti veebiserveriga, kuid see võib olla ka vahendiserver või mõni muu TCP teenus.
3. SSH tunnel teisele hostile
Me võime kasutada samu parameetreid tunneli ühendamiseks eemalolevalt serverilt mõne teise teenusega, mis töötab kolmandal süsteemil.
localhost:~$ ssh -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserverAntud näites suuname tunneli remoteserver'ilt veebiserverile, mis töötab 10.10.10.10. Liiklus remoteserver'ilt 10.10.10.10 ei ole enam SSH tunnelis. Veebiserver 10.10.10.10 peab remoteserver'it veebipäringute allikaks.
4. Tagasi SSH tunnel
Siin seadistame kuulamisporta eemaloleval serveril, mis ühendub tagasi meie localhost'i (või mõne teise süsteemi) kohaliku porti.
localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserverSelles SSH-seansis luuakse ühendus pordilt 1999 remoteserver'ile pordile 902 meie kohaliku kliendi poole.
5. SSH tagasipöördproksi
Sellisel juhul seadistame socks-proksi meie ssh-ühenduse kaudu, kuid proksi kuulab serveri eemalolekul. Ühendused sellele kaugproksile ilmuvad nüüd tunnelist kui liiklus meie localhost'ilt.
localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserverProbleemide lahendamine kaugete SSH tunnelitega
Kui teil on probleeme kaug SSH valikutega, kontrollige kasutades netstat, millistele muudele liidesele kuulub kuulamisport. Kuigi meie näidetes on määratud 0.0.0.0, siis kui väärtus GatewayPorts ühes sshd_config on määratud väärtuseks ei, siis kuulaja soositakse ainult localhost'ile (127.0.0.1).
Turvahoiatuse
Olge teadlik, et tunnelite ja socks-proksi avamisel võivad sisemised võrguressursid olla kergesti ligipääsetavad ebausaldusväärsete võrkudele (nt internetile!). See võib olla tõsine turvaprobleem, seega veenduge, et mõistate, mida kuulaja endast kujutab ja millele tal ligipääs on.
6. VPN seadistamine SSH kaudu
Termin, mida spetsialistid rünnete meetodite (penetratsioonitestijad jne) seas kasutavad, on "võrgus tugipunkt". Kui ühendus on loodud ühe süsteemiga, muutub see süsteem väravaks edasiseks juurdepääsuks võrgule. Tugipunkt, mis võimaldab laiemat liikumist.
Sellise tugipunkti jaoks saame kasutada SSH-proksit ja proxychains, kuid on mõned piirangud. Näiteks ei saa me otse sokettidega töötada, seega ei saa me skaneerida porte võrgus läbi SYN.
Kasutades seda keerulisemat VPN-varianti, väheneb ühendus tasemele 3. Siis saame lihtsalt suunata liikluse läbi tunnel, kasutades standardset võrgusuunamist.
Meetod kasutab ssh, iptables, tun-liideseid ja suunamist.
Esmalt peame need parameetrid määrama sshd_config. Kuna me muudame nii kaug- kui ka kliendisüsteemi liideseid, on meil vajalikud root-õigused mõlemalt poolt.
PermitRootLogin yes
PermitTunnel yesSeejärel loome ssh-ühenduse, kasutades parameetrit, mis küsib tun-seadmete algatamist.
localhost:~# ssh -v -w any root@remoteserver Nüüd peaks meil olema tun-seade liideste kuvamisel (# ip a). Järgmine samm lisab IP-aadresse tunneliliidesele.
SSH kliendi pool:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 upSSH serveri pool:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up Nüüd on meil otsene marsruut teise hosti juurde (route -n ja ping 10.10.10.10).
Saame marsruutida mis tahes alamvõrgu üle vastasküljel asuva hosti.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0 Kauges pool tuleb aktiveerida ip_forward ja iptables.
remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADEBoom! VPN SSH tunnelil tasemel 3. See on juba võit.
Kui tekib probleeme, kasutage ja ping, et välja selgitada põhjus. Kuna mängime tasemel 3, liiguvad meie icmp paketid läbi selle tunnel.
7. SSH võtme kopeerimine (ssh-copy-id)
Siin on mitu võimalust, kuid see käsk säästab aega, et failide käsitsi kopeerimist vältida. See kopeerib lihtsalt ~/ .ssh/id_rsa.pub (või vaikimisi võtme) teie süsteemist ~/ .ssh/authorized_keys kaugsesse serverisse.
localhost:~$ ssh-copy-id user@remoteserver
8. Kaugteostus (interaktiivne)
Käsku ssh Saate ühendada teistega tavalise mugava liidese jaoks. Lihtsalt lisage kaugserveris käivitamiseks soovitud käsk jutumärkides viimase parameetrina.
localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php Antud näites grep käivitatakse kohaliku süsteemi peal pärast seda, kui logi on üle ssh-kanali alla laaditud. Kui fail on suur, on mugavam käivitada grep eemal, lihtsalt mõlemad käsud kahekordsetesse jutumärkidesse pannes.
Teine näide täidab sama funktsiooni, mis ssh-copy-id näites 7.
localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'
9. Kaugpakettide pealtkuulamine ja vaatamine Wiresharkis
Võtsin ühe meie . Kasutage seda kaugpakettide pealtkuulamiseks, andmete edastamine otse kohaliku Wiresharki GUI-sse.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Kohaliku kausta kopeerimine kaugserverisse SSH kaudu
Ilus trikk, mis tihendab kausta bzip2 (see on -j parameeter käsus tar), ja seejärel ekstraktib voolu bzip2 teisel pool, luues kaugserveris kausta duplikaadi.
localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"
11. GUI kaugprogrammid SSH X11 edastamisega
Kui nii kliendil kui ka kaugserveril on installitud „X-id“, on võimalik kaugelt CLI käitada, kuvatuna teie kohalikus töölauas. See funktsioon on juba pikka aega olemas, kuid on jätkuvalt väga kasulik. Käivitage kaugveebibrauser või isegi VMWare Workstationi konsool, nagu ma teen selles näites.
localhost:~$ ssh -X remoteserver vmware Nõutav rida X11Forwarding yes failis sshd_config.
12. Failide kaugkopeerimine rsync ja SSH abil
rsync on palju mugavam scp, kui on vajalik ajastatud varundamine kataloogist, suurest hulgast failidest või väga suurtest failidest. Siin on olemas edastamise ja kopeerimise talitlushäires taastamise funktsioon, samuti ainult muudetud failide kopeerimine, mis säästab liiklust ja aega.
Selles näites kasutatakse kokkusurumist gzip (-z) ja arhiivirežiimi (-a), mis hõlmab rekursiivset kopeerimist.
:~$ rsync -az /home/testuser/data remoteserver:backup/
13. SSH läbi Tor võrgu
Anonüümsed Tor-võrgud saavad tunnelida SSH liiklust käsuga torsocks. Järgmine käsk suunab ssh-proksi läbi Tor.
localhost:~$ torsocks ssh myuntracableuser@remoteserverkasutatakse proxy porti 9050 localhostis. Nagu alati Tor'i kasutamisel, on hädavajalik tõsiselt kontrollida, milline liiklus on tunnelitud ja muud operatiivturvalisuse (opsec) probleemid. Kuhu lähevad teie DNS-päringud?
14. SSH EC2 instantsile
EC2 instantsile ühendamiseks on vajalik privaatvõti. Laadige see alla (laiend .pem) Amazon EC2 juhtpaneelilt ja muutke selle õigusi (chmod 400 my-ec2-ssh-key.pem). Hoidke võti usaldusväärses kohas või asetage see oma kausta ~/.ssh/.
localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public Parameeter -i märkab ssh-klienti kasutama seda võtit. Fail ~/.ssh/config sobib ideaalselt automaatsete seadistuste jaoks, et võtit hostiga ec2 ühendamisel kasutada.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Tekstifailide redigeerimine VIM-i abil ssh/scp kaudu
Käikidele huvilistele vim see näpunäide säästab teile veidi aega. Kasutades vim failid redigeeritakse lihtsalt ühe scp käsuga. See meetod loob faili kohalikult /tmp, ja kopeerib selle tagasi, kui oleme selle salvestanud vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts Märkus: formaat erineb veidi tavalisest scp. Pärast hosti järgneb meil kahekordne //. See on link absoluutsele teele. Üks kaldkriips tähistab teed kodukausta suhtes. users.
**warning** (netrw) ei suuda meetodit määrata ( formaat: protokoll://[kasutaja@]hostname[:port]/[tee])Kui näete sellist viga, kontrollige käskluse formaati kaks korda. See tähendab tavaliselt süntaksiviga.
16. Kaug-SSH montaaž nagu kohalik kataloog SSHFS-i abil.
Kasutades sshfs — failisüsteemi klient ssh — saame ühendada kohaliku katalooge kaugasukohta, tehes kõiki failihalduse toiminguid krüpteeritud sessiooni kaudu. ssh.
localhost:~$ apt install sshfs Ubuntu ja Debianis paigaldame paketi sshfs, ja siis monteerime lihtsalt kaugasukoha meie süsteemi.
localhost:~$ sshfs user@remoteserver:/media/data ~/data/
17. SSH multiplexer ControlPath abil.
Vaikimisi, kui olemasolev ühendus kaugs serveriga on loodud, ssh teine ühendus läbi ssh või scp seob uue sessiooni täiendava autentimisega. Valik ControlPath lubab kasutada olemasolevat seanssi kõigi järgmiste ühenduste jaoks. See kiirendab protsessi märgatavalt: mõju on tajutav isegi kohalikus võrgus, rääkimata kaugressursside ühendamisest.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m ControlPath määrab soketi, et kontrollida uute ühenduste puhul aktiivsete seansside olemasolu ssh. Viimane valik tähendab, et isegi pärast konsoolist lahkumist jääb olemasolev sessioon avatuks 10 minutiks, nii et selle aja jooksul saate uuesti ühenduse luua olemasoleva soketi kaudu. Lisainfo leiate abist ssh_config man.
18. Voogedastus SSH kaudu VLC ja SFTP
Isegi pikaajalised kasutajad ssh ja vlc (Video Lan Client) ei tea alati sellest mugavast võimalusest, kui on tõeliselt vajalik vaadata videot võrgus. Seadetes File | Open Network Stream programmede vlc võite sisestada asukoha nagu sftp://. Kui on vajalik parool, kuvatakse küsitlus.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Kahefaktoriline autentimine
Sama kahefaktoriline autentimine, nagu teie pangakonto või Google'i konto, kehtib ka SSH teenuse puhul.
Muidugi, ssh algne funktsioon sisaldab kahefaktorilist autentimist, mis tähendab parooli ja SSH võtme olemasolu. Füüsilise tokeni või Google Authenticatori rakenduse eelised seisnevad selles, et see on tavaliselt teine füüsiline seade.
Vaata meie 8-minutilist juhendit .
20. SSH ja -J kaudu hostide vahetamine
Kui võrgu segmendi tõttu on vajalik ületada mitu SSH hosti, et jõuda sihtvõrku, siis säästab teid aega -J lühend.
localhost:~$ ssh -J host1,host2,host3 user@host4.internal Siin on oluline mõista, et see ei ole samaväärne käsuga ssh host1, seejärel user@host1:~$ ssh host2 jne. -J parameeter kasutab nutikalt edasitoimetamist, et localhost looks session'i järgmise hostiga ketis. Seega meie localhost autentitakse host4-l. See tähendab, et meie localhost'i võtmepaarid on kasutusel ning session localhost'ist host4-ni on täielikult krüpteeritud.
Selle võimaluse jaoks ssh_config määrake konfiguratsiooni võimalus ProxyJump. Kui peate regulaarselt üle minema mitmele hostile, siis automatiseerimine konfiguratsioonifaili kaudu säästab palju aega.
21. SSH brute-force katsete blokeerimine iptables'i abil
Igaüks, kes on SSH teenust haldanud ja logisid vaatamas käinud, teab, kui palju brute-force katseid toimub iga tunni ja iga päeva jooksul. Kiire viis logides müra vähendada on viia SSH mittestandardsesse porti. Tehke muudatused failis sshd_config konfiguratsiooniparameetri abil Port##.
Käesoleva abil iptables on samuti lihtne blokeerida ühenduse proovimist sadamasse, kui teatud lävend on saavutatud. Lihtne viis selleks on kasutada , kuna see mitte ainult ei blokeeri SSH-d, vaid viib ellu ka palju teisi tegevusi, et tuvastada sissetungimise katsed hostinime alusel (HIDS).
22. SSH Escape portide suunamise muutmiseks
Ja meie viimane näide ssh on mõeldud portide suunamise muutmiseks jooksvalt olemasoleva sessiooni raames ssh. Kujutage ette sellist stsenaariumi. Olete sügaval võrgus; võib-olla olete hüpanud üle poole tosinast hostist ja vajate kohalikku porti teie tööjaamas, mis on suunatud Microsoft SMB vana Windows 2003 süsteemi (kas keegi mäletab ms08-67?).
Pärast vajutamist enter, proovige sisestada konsooli ~C. See on juhtimisjärjestus sessioonis, mis võimaldab teha muudatusi olemasolevas ühenduses.
localhost:~$ ~C
ssh> -h
Commands:
-L[bind_address:]port:host:hostport Küsi kohalikku edasi.
-R[bind_address:]port:host:hostport Küsi kaugülekande.
-D[bind_address:]port Küsi dünaamilist edasi.
-KL[bind_address:]port Tühista kohaliku edasi.
-KR[bind_address:]port Tühista kaugülekande.
-KD[bind_address:]port Tühista dünaamiline edasi.
ssh> -L 1445:remote-win2k3:445
Sadam on suunatud. Siit näete, et oleme suunanud meie kohalikku porti 1445 Windows 2003 hostile, mille leidsime sisemisest võrgust. Nüüd lihtsalt käivitage msfconsole, ja saate edasi liikuda (eeldades, et plaanite seda hosti kasutada).
Lõpetamine
Need näited, nõuanded ja käsud ssh peavad andma lähtepunkti; iga käsu ja võimaluse kohta on täiendavat teavet abilehtedel (man ssh, man ssh_config, man sshd_config).
Olen alati olnud lummatud võimalusest pääseda süsteemidele ja käivitada käske igast maailma punktist. Arendades oma oskusi selliste tööriistadega nagu ssh saate igas mängus, mida mängite, tõhusamaks.
Allikas: habr.com
