Razlika između inačica stranice SSH
m (→Tuneliranje prometa kroz ssh vezu) |
m (→Tuneliranje prometa kroz ssh vezu) |
||
Redak 66: | Redak 66: | ||
network.proxy.socks_remote_dns = true | network.proxy.socks_remote_dns = true | ||
::u postavkama Proxyja: ''SOCKS host: 127.0.0.1'', ''Port: 8080'', ''SOCKS v5'' i ukloniti ''127.0.0.1'' iz ''no proxy''. | ::u postavkama Proxyja: ''SOCKS host: 127.0.0.1'', ''Port: 8080'', ''SOCKS v5'' i ukloniti ''127.0.0.1'' iz ''no proxy''. | ||
+ | |||
+ | Tuneliranje prometa od jednog računala (host2) preko međučvora (host1): | ||
+ | ssh -L 9999:host2:9999 -N host1 | ||
+ | (važno: promet između host1 i host2 nije nužno enkriptiran) | ||
===Ostvarivanje ssh veze kroz postojeću ssh vezu=== | ===Ostvarivanje ssh veze kroz postojeću ssh vezu=== |
Inačica od 23:20, 8. lipnja 2016.
Sadržaj
- 1 Trikovi
- 1.1 Automatska prijava SSH-om na računalo bez traženja zaporke
- 1.2 Automatska prijava SSH-om koji zahtijeva Kerberos ticket
- 1.3 Montiranje udaljenih datotečnih sustava lokalno preko SSH-a
- 1.4 Tuneliranje prometa kroz ssh vezu
- 1.5 Ostvarivanje ssh veze kroz postojeću ssh vezu
- 1.6 Tuneliranje određenog porta s udaljenog računala na lokalno
- 1.7 Tuneliranje X-a kroz ssh
- 1.8 Spajanje na postojeći X session
- 1.9 Održavanje konekcije i nakon prekida veze - autossh
Trikovi
Automatska prijava SSH-om na računalo bez traženja zaporke
Ideja: s korisnikom a na računalu A želimo se prijaviti na računalo B kao korisnik b bez zaporke.
- 1. Generirati privatni i javni RSA ključ na računalu A s korisnikom a:
ssh-keygen -t rsa
- 2. kreirati direktorij .ssh na računalu B kod korisnika b
ssh b@B mkdir -p .ssh
(dobro bi bilo staviti i chmod 700 na taj direktorij)
- 3. kopirati novokreirani javni ključ s računala A i korisnika a na računalo B kod korisnika b u datoteku .ssh/authorized_keys:
ssh-copy-id -i ~/.ssh/id_rsa.pub b@B
To je to.
- (izvor)
Automatska prijava SSH-om koji zahtijeva Kerberos ticket
Potrebno je prvo generirati keytab za Kerberos:
$ ktutil ktutil: add_entry -password -p username@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96 ktutil: write_kt /home/user/.keytab
Zatim dodati sljedeću ssh konfiguraciju:
$ cat ~/.ssh/config Host mysshserver HostName hostname.example.com GSSAPIAuthentication yes GSSAPIDelegateCredentials yes user username ProxyCommand /home/user/.ssh_custom.sh %h %p ServerAliveInterval 60
I napisati skriptu koja će pozvati kinit prije spajanja:
$ cat ~/.ssh_custom.sh #!/bin/bash if [ ! "$(pidof krenew)" ]; then # get keberos ticket without password kinit -k -t ~/.keytab username@EXAMPLE.COM krenew -K 5 -b fi /usr/bin/nc "$1" "$2"
Montiranje udaljenih datotečnih sustava lokalno preko SSH-a
To je moguće uz pomoć programa sshfs.
Tuneliranje prometa kroz ssh vezu
Moguće situacije:
- Računalo nema direktnu vezu na internet, ali se može sshom spojiti na drugo računalo u mreži koje ima pristup internetu.
- Laptop je spojen na javnu bežićnu mrežu i time omogućuje uljezima presretanje prometa, krađu zaporki koje se šalju preko mreže i sl.
- Neke su web stranice blokirane u zemlji u kojoj se nalazimo (npr. Kini ili Hrvatskoj), dok su iz drugih zemalja dostupne.
U svakom od ovih slučaja dobro je tunelirati promet kroz ssh vezu koja je sigurna sama po sebi. Jedini je zahtjev ovdje da imamo vanjsko računalo na koje se možemo spojiti sshom.
Primjer kako to napraviti s Firefoxom:
- postavi se tuneliranje ssh na portu 8080 kroz računalo free.proxy (postavlja se adresa vanjskog računala na koje se spajamo sshom):
ssh -D 8080 -Nf free.proxy
- -D je ovdje ključna opcija (-N služi za onemogućavanje izvršavanja naredbi na udaljenom računalu, -f stavljanje ssh-a u pozadinski način rada)
- u Firefoxu je potrebno podesiti sljedeće:
- u about:config (za tuneliranje i DNS upita):
network.proxy.socks_remote_dns = true
- u postavkama Proxyja: SOCKS host: 127.0.0.1, Port: 8080, SOCKS v5 i ukloniti 127.0.0.1 iz no proxy.
Tuneliranje prometa od jednog računala (host2) preko međučvora (host1):
ssh -L 9999:host2:9999 -N host1
(važno: promet između host1 i host2 nije nužno enkriptiran)
Ostvarivanje ssh veze kroz postojeću ssh vezu
Računalo A ima mogućnost spojiti se na računalo B ssh vezom. Želja je spojiti se s računala B, na računalo A također ssh-om, ali računalo A nema vanjski IP ili podešen "Port Forwarding" za ssh. Moguće je stoga ostvariti konekciju s računala A na računalo B:
ssh -R 2222:localhost:22 adresa_računala_B
i onda s računala B spojiti se na računalo A:
ssh localhost -p 2222
Uz to potrebno je provjeriti postoji li na računalu B sljedeće postavke u /etc/ssh/sshd_config:
AllowTcpForwarding yes TCPKeepAlive yes
Tuneliranje određenog porta s udaljenog računala na lokalno
Port 80 na udaljenom računalu je "preslikan" na port 8080 na lokalnom računalu, odnosno, ono što bi inače dobili ukucavanjem adrese mojadomena.hr u preglednik, dobivamo ukucavanjem localhost:8080:
ssh -C -L 8080:localhost:80 korisnik@mojadomena.hr
gdje mojadomena.hr može biti i IP adresa, naravno, a korisnik se ne treba navoditi ako je isti na oba računala.
Tuneliranje X-a kroz ssh
Ukoliko su računala međusobno povezana relativno brzom vezom (preferirano WLAN, LAN, ispod 5Mbit je vrlo sporo iscrtavanje prozora), moguće je slati X (GUI) aplikacije kroz ssh vezu.
Postupak je sljedeći - kod klasičnog spajanja dodaje se još opcija -X, tako da cijela naredba izgleda:
ssh -X korisnik@racunalo
Nakon upisivanja zaporke i prijavljivanja na udaljeno računalo dovoljno je upisati ime aplikacije koja se želi pokrenuti, npr. firefox.
Spajanje na postojeći X session
Na računalo na koje se želimo spojiti treba instalirati i pokrenuti pgoram x11vnc:
x11vnc -noxdamage -display :0 -safer -nopw -once -xrandr
gdje je :0 željena sesija Xorg-a ($DISPLAY). Nakon toga potrebno je uspostaviti još klasično tuneliranje porta preko SSH-a opisano iznad:
ssh -L 5900:localhost:5900 korisnik@example.com
i spojiti se VNC klijentom na localhost:5900.
Održavanje konekcije i nakon prekida veze - autossh
Vidi autossh.