Razlika između inačica stranice SSH

Izvor: HrOpenWiki
Skoči na: orijentacija, traži
m
m (Tuneliranje određenog porta s udaljenog računala na lokalno)
 
Nije prikazano 6 međuinačica istog suradnika
Redak 39: Redak 39:
 
  $ cat ~/.ssh_custom.sh  
 
  $ cat ~/.ssh_custom.sh  
 
  #!/bin/bash
 
  #!/bin/bash
 
+
  if [ ! "$(pidof krenew)" ]; then
  # get keberos ticket without password
+
    # get keberos ticket without password
kinit -k -t ~/.keytab username@EXAMPLE.COM
+
    kinit -k -t ~/.keytab username@EXAMPLE.COM
krenew -K 5 -b
+
    krenew -K 5 -b
 +
fi
 
  /usr/bin/nc "$1" "$2"
 
  /usr/bin/nc "$1" "$2"
  
Redak 65: 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===
Redak 71: Redak 87:
 
  ssh -C -L 8080:localhost:80 korisnik@mojadomena.hr
 
  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.
 
gdje ''mojadomena.hr'' može biti i IP adresa, naravno, a korisnik se ne treba navoditi ako je isti na oba računala.
 +
 +
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)
  
 
===Tuneliranje X-a kroz ssh===
 
===Tuneliranje X-a kroz ssh===
Redak 79: Redak 99:
 
Nakon upisivanja zaporke i prijavljivanja na udaljeno računalo dovoljno je upisati ime aplikacije koja se želi pokrenuti, npr. ''firefox''.
 
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===
 
===Održavanje konekcije i nakon prekida veze - autossh===
 
Vidi [[autossh]].
 
Vidi [[autossh]].
  
 
[[Kategorija:CLI_naredbe]]
 
[[Kategorija:CLI_naredbe]]

Trenutačna izmjena od 23:21, 8. lipnja 2016.

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 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)

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.