Forum » Operacijski sistemi » ssh -X
ssh -X
poweroff ::
Rad bi zagnal neko aplikcijo preko ssh (na oddaljenem računalniku), vendar v grafičnem načinu.
Skratka, če rečem ssh -X mojserver in potem recimo firefox, se firefox lepo požene na "mojserver", zaslon oz. okno od programa pa vidim pri sebi.
Zdaj pa problem. Če rečem ssh -Xprviserver, pa potem od tam naprej ssh -X drugiserver in potem v konzoli npr. firefox... se zadeva ne zažene.
Kako to rešiti?
Aja, pri vmesnem serverju imam v /etc/ssh/ssh_config napisano "ForwardX11 yes".
Skratka, če rečem ssh -X mojserver in potem recimo firefox, se firefox lepo požene na "mojserver", zaslon oz. okno od programa pa vidim pri sebi.
Zdaj pa problem. Če rečem ssh -Xprviserver, pa potem od tam naprej ssh -X drugiserver in potem v konzoli npr. firefox... se zadeva ne zažene.
Kako to rešiti?
Aja, pri vmesnem serverju imam v /etc/ssh/ssh_config napisano "ForwardX11 yes".
sudo poweroff
poweroff ::
Recimo, da sem na mašini "dsl". Vmesna masina se imenuje "vmes", ciljna pa "cilj".
Iz "dsl" rečem: ssh uservmes@vmes -R 10000:cilj:22
Potem iz "dsl" rečem: ssh -X usercilj@localhost -p 10000.
In mi javi connection refused. S tem, da imam na "vmes" odprt port 10000 iz "dsl".
Any help?
Iz "dsl" rečem: ssh uservmes@vmes -R 10000:cilj:22
Potem iz "dsl" rečem: ssh -X usercilj@localhost -p 10000.
In mi javi connection refused. S tem, da imam na "vmes" odprt port 10000 iz "dsl".
Any help?
sudo poweroff
kopernik ::
Nisem nek strokovnjak glede ssh, ampak mislim, da moraš imeti tudi pri sebi (torej na mašini "dsl") zagnan sshd in v sshd_configu nastavitev AllowTcpForwarding označen kot yes. Ker naj bi tudi iz ciljne mašine hodili neki klici na tvojo ... tako moram imeti jaz pri ssh tunelih ...
Zgodovina sprememb…
- spremenil: kopernik ()
mangaldar ::
Rešitev je ssh tunel
Recimo začeneš tako, da rečeš "ssh -L 2222:mojserver:22 prviserver cat -"
To vzpostavi ssh tunel, ki ves promet iz localhost:2222 preusmeri na mojserver:22 preko prviserver.
Potem pa odpreš drugo konzolo in vpišeš "ssh -X -p 2222 localhost", in se vzpostavi ssh seja na mojserver skozi tunel.
Tako na prviserver ne rabiš imet vključenega ForwardX11.
Še en link na to temo:
http://www.rzg.mpg.de/networking/tunnel...
Recimo začeneš tako, da rečeš "ssh -L 2222:mojserver:22 prviserver cat -"
To vzpostavi ssh tunel, ki ves promet iz localhost:2222 preusmeri na mojserver:22 preko prviserver.
Potem pa odpreš drugo konzolo in vpišeš "ssh -X -p 2222 localhost", in se vzpostavi ssh seja na mojserver skozi tunel.
Tako na prviserver ne rabiš imet vključenega ForwardX11.
Še en link na to temo:
http://www.rzg.mpg.de/networking/tunnel...
poweroff ::
Hm, a to pomeni, da če imašpet vmesnih serverjev, je treba 5 konzol odpreti? Kakšne bolj elegantne rešitve ni?
sudo poweroff
poweroff ::
Paranoja? Problem je čisto praktičen.
Imam eno kišto, ki je v lokalnem omrežju - za NATom. Direktno NI dostopna. Na NAT seveda lahko pridem, ker je to Linux kišta, vendar je ta NAT precej pomemben (ima namreč še eno drugo funkcijo) in je ssh dostop do njega zaklenjen. Zaklejnej ne na IP.
Obstaja torej še tretji server, ki sprejema ssh povezave in iz katerega se lahko priklopim na ta NAT.
Torej gre takole:
lokacija_kjerkoli --> odprti_server --> NAT_server --> kišta_v_lokalnem_omrežju
Zqadeva se v bistvu še malenkost bolj zakomplicira, namreč lokacija_kjerkoli je v bistvu virtualna kišta, ki jo je mogoče zagnati iz Windpws ali Linux okolja iz USB ključa.
Sicer se res sliši precej komplicirano, vendar dobro deluje, saj tako rešitev že uporabljam dlje časa. No, zdaj sem si zaželel še videti X-e. Ta viertualna kišta to omogoča (preko ssh -X), se pravi bi načeloma moralo iti tudi preko ssh tunela.
Imam eno kišto, ki je v lokalnem omrežju - za NATom. Direktno NI dostopna. Na NAT seveda lahko pridem, ker je to Linux kišta, vendar je ta NAT precej pomemben (ima namreč še eno drugo funkcijo) in je ssh dostop do njega zaklenjen. Zaklejnej ne na IP.
Obstaja torej še tretji server, ki sprejema ssh povezave in iz katerega se lahko priklopim na ta NAT.
Torej gre takole:
lokacija_kjerkoli --> odprti_server --> NAT_server --> kišta_v_lokalnem_omrežju
Zqadeva se v bistvu še malenkost bolj zakomplicira, namreč lokacija_kjerkoli je v bistvu virtualna kišta, ki jo je mogoče zagnati iz Windpws ali Linux okolja iz USB ključa.
Sicer se res sliši precej komplicirano, vendar dobro deluje, saj tako rešitev že uporabljam dlje časa. No, zdaj sem si zaželel še videti X-e. Ta viertualna kišta to omogoča (preko ssh -X), se pravi bi načeloma moralo iti tudi preko ssh tunela.
sudo poweroff
mangaldar ::
Ok, to je malo bolj komplicirano, ampak se bom potrudil razložit.
Tunele lahko delaš v eni konzoli tako, da ssh spraviš v ozadje. Za to uporabiš stikalo -N za ssh ukaz; in znak &, ki spravi ukaz v ozadje.
Po tem lahko v isti konzoli narediš naslednji tunel.
Cel postopek bi zgledal nekako takole:
# ssh -N -L 2222:NAT_server:22 odprti_server cat - &
# ssh -N -L 2223:kišta:22 -p 2222 localhost cat - &
Potem se lahko na NAT_server povežeš z ukazom:
# ssh -p 2222 localhost
Na kišta pa:
# ssh -p 2223 localhost
Taka je teorija. Žal pa se pri drugi povezavi na localhost ssh pritoži, da nekaj ne štima s host ključem za localhost. Namreč ob prvi povazavi na localhost moraš sprejeti javni ključ serverja NAT_server, ki se potem shrani v ~/.ssh/known_hosts (kot localhost seveda).
Ob povezavi na port 2223, kjer nas čaka kišta, pa ta pošlje svoj ključ. Ker ssh misli, da se povezujemo na localhost, pogleda v known_hosts za njegov ključ. Tam najde ključ ki v resnici pripada NAT_serverju, ki pa se ne ujema s poslanim, ki je od kište.
Ok, do sem sem razlago precej zakompliciral. Upam da bo rešitev bolj razumljiva.
V datoteko ~/.ssh/ssh_config na "lokacija_kjerkoli" vpišeš:
host vNAT_server
Port 2222
CheckHostIP no
Hostname localhost
HostKeyAlias vNAT_server
ForwardX11 yes
host vkišta
Port 2223
CheckHostIP no
Hostname localhost
HostKeyAlias vkišta
ForwardX11 yes
S tem smo ssh-ju povedali, da naj ukaz
# ssh vNAT_server
nas poveže na localhost na portu 2222, ter da naj za ključ serverja v datoteki known_hosts uporabi hostname vNAT_server.
Podobno velja tudi za vkišta.
Prejšnji ukazi sedaj izgledajo tako:
# ssh -N -L 2222:NAT_server:22 odprti_server cat - &
# ssh -N -L 2223:kišta:22 -p 2222 vNAT_server cat - &
Tunela sta sedaj pripravljena, lahko se povežemo:
Če bi rad delal na NAT_serverju:
# ssh vNAT_server
Če bi pa rad direktno na kišto:
# ssh vkišta
Cel postopek ja res malo čuden, mogoče bi se dalo stvar tudi kako drugače naredit.
Pametno bi bilo uporabiti še Public Key Authentication, da ti ni treba vsakič vpisovati gesel.
Poleg tega lahko ukaza za postavitev tunela daš v kako zagonsko skripto, da se vzpostavita vedno ko se zažene lokacija_kjerkoli.
Tunele lahko delaš v eni konzoli tako, da ssh spraviš v ozadje. Za to uporabiš stikalo -N za ssh ukaz; in znak &, ki spravi ukaz v ozadje.
Po tem lahko v isti konzoli narediš naslednji tunel.
Cel postopek bi zgledal nekako takole:
# ssh -N -L 2222:NAT_server:22 odprti_server cat - &
# ssh -N -L 2223:kišta:22 -p 2222 localhost cat - &
Potem se lahko na NAT_server povežeš z ukazom:
# ssh -p 2222 localhost
Na kišta pa:
# ssh -p 2223 localhost
Taka je teorija. Žal pa se pri drugi povezavi na localhost ssh pritoži, da nekaj ne štima s host ključem za localhost. Namreč ob prvi povazavi na localhost moraš sprejeti javni ključ serverja NAT_server, ki se potem shrani v ~/.ssh/known_hosts (kot localhost seveda).
Ob povezavi na port 2223, kjer nas čaka kišta, pa ta pošlje svoj ključ. Ker ssh misli, da se povezujemo na localhost, pogleda v known_hosts za njegov ključ. Tam najde ključ ki v resnici pripada NAT_serverju, ki pa se ne ujema s poslanim, ki je od kište.
Ok, do sem sem razlago precej zakompliciral. Upam da bo rešitev bolj razumljiva.
V datoteko ~/.ssh/ssh_config na "lokacija_kjerkoli" vpišeš:
host vNAT_server
Port 2222
CheckHostIP no
Hostname localhost
HostKeyAlias vNAT_server
ForwardX11 yes
host vkišta
Port 2223
CheckHostIP no
Hostname localhost
HostKeyAlias vkišta
ForwardX11 yes
S tem smo ssh-ju povedali, da naj ukaz
# ssh vNAT_server
nas poveže na localhost na portu 2222, ter da naj za ključ serverja v datoteki known_hosts uporabi hostname vNAT_server.
Podobno velja tudi za vkišta.
Prejšnji ukazi sedaj izgledajo tako:
# ssh -N -L 2222:NAT_server:22 odprti_server cat - &
# ssh -N -L 2223:kišta:22 -p 2222 vNAT_server cat - &
Tunela sta sedaj pripravljena, lahko se povežemo:
Če bi rad delal na NAT_serverju:
# ssh vNAT_server
Če bi pa rad direktno na kišto:
# ssh vkišta
Cel postopek ja res malo čuden, mogoče bi se dalo stvar tudi kako drugače naredit.
Pametno bi bilo uporabiti še Public Key Authentication, da ti ni treba vsakič vpisovati gesel.
Poleg tega lahko ukaza za postavitev tunela daš v kako zagonsko skripto, da se vzpostavita vedno ko se zažene lokacija_kjerkoli.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Php my admin like dekstop app ?Oddelek: Izdelava spletišč | 1339 (1226) | XS!D3 |
» | SSH forwarding na MikrotikuOddelek: Omrežja in internet | 1815 (1555) | miki133 |
» | Priklop na KVM konzolo iz ukazne vrsticeOddelek: Programska oprema | 1288 (1072) | SasoS |
» | Blokirani dohodni porti na mobilnih omrežjihOddelek: Omrežja in internet | 3046 (2753) | Tero |
» | VNC+ varnost + dinamični IP. Kako ??Oddelek: Omrežja in internet | 4375 (3391) | flisko |