Razlika između inačica stranice SSH

Izvor: HrOpenWiki
Skoči na: orijentacija, traži
m
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''.
 +
 +
===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===
 
===Tuneliranje određenog porta s udaljenog računala na lokalno===

Inačica od 00:26, 22. studenoga 2015.

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.

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"

Reference: [1], [2], [3]

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.

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.