Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: gdm - 29.10.07 - klo:17.35
-
eli foorumeita selanneena, ei vastaan ole tullut ohjetta jonka ymmärtäisin ???
kaksi konetta, eri puolilla Suomea, molemmissa NAT päällä (Network Address Translation)
Julkiset IP:t eri palvelun tarjoajilta
Tilanne;
Kone A: ssh-client, iptables ja verkkopäätteestä aukaistu portti 22, Julkinen IP NATin takana.
Kone B ssh-server, iptables ja verkkopäätteestä aukaistu portti 22, julkinen IP NATin takana
Historia;
Lähiverkossa toimii ssh-yhteys ongelmitta, ja koneen A että, B sshd_config tiedostot tilkitty umpeen muilta, foorumilta löytyvien ohjeiden mukaan...
Ongelma;
koneA@ubuntu:~$ ssh koneB@julkinen.ip
ssh: connect to host julkinen.ip. port 22: No route to host
[EDIT] ongelman lisäys,
KoneB ei vastaa edes ping kyselyyn. koneB:ssä on tw501ea verkkopääte ja icmp echo reply deny muistaakseni päällä
johan sunnuntaista on pitkä aika jolloin sitä viimeksi conffasin :)
Mistäköhän löytyisi ratkaisu???
täytyy myöntää että, itselläni ei rahkeet tähän riitä
-
Jos kone on NATin takana, ei ssh saati sitten ping pääse koneelle asti ilman nat-laitteen säätöä. PortForwarding lienee tempun nimi sunkin purkissas. En nyt kyllä ole varma mitä tarkoitat "Julkinen IP natin takana". Oire vaan sopii siihen että nat-purkki toimii palomuurina eikä vastaa ssh-pyyntöön.
-
kts myös
http://forum.ubuntu-fi.org/index.php?topic=11975.0
-
Vastaan itselleni, kiitos mjr:lle irc-tuesta:
Kone A on siis ylläpidettävä ja SSH on portissa 22, NAT:n takana.
Kone B löytyy osoite.fi:n takaa ja SSH portissa 8000
Koneella A ajetaan seuraava:
ssh -R 8001:localhost:22 osoite.fi -p 8000
ja koneella B seuraava:
ssh localhost -p 8001
mikä on tuo portti 8001, jos koneen B:n ssh on portissa 8000 ???
ymmärsinkö oikein, kone A antaa tuolla komennolla koneelle B luvan kolkutella ovea,
ja kone B komennolla sitten aukaisee sen yhteyden.
eli menisi kai tällä lailla minun tapauksessa:
koneBssh R 22:localhost:22 koneA@minun.ip:22 -p 22
koneAssh localhost -p 22
-
Vastaan itselleni, kiitos mjr:lle irc-tuesta:
Kone A on siis ylläpidettävä ja SSH on portissa 22, NAT:n takana.
Kone B löytyy osoite.fi:n takaa ja SSH portissa 8000
Koneella A ajetaan seuraava:
ssh -R 8001:localhost:22 osoite.fi -p 8000
ja koneella B seuraava:
ssh localhost -p 8001
mikä on tuo portti 8001, jos koneen B:n ssh on portissa 8000 ???
ymmärsinkö oikein, kone A antaa tuolla komennolla koneelle B luvan kolkutella ovea,
ja kone B komennolla sitten aukaisee sen yhteyden.
eli menisi kai tällä lailla minun tapauksessa:
koneBssh R 22:localhost:22 koneA@minun.ip:22 -p 22
koneAssh localhost -p 22
Paitsi että pidä nuo 8001:t. Ne ei voi olla 22, jos sisääntuleva on jo 22.. Mutta nuo 8000:t voit korvata 22:lla.
-
Eli tarina jatkuu,
vaihdoin ssh:portin /etc/ssh_config tiedostosta porttiin 8000
ja saman tein myös sshd_config tiedostossa, millä ei kai ole väliä koska serveriä en itse pidä (ainakaan vielä)
verkkopäätteestä avattiin portit 8000 ja 8001 ja bootattu.
ssh, käynnistettiin uudestaan.
koneB:n verkkopäätteestä on portti 22 auki
puhelin käteen, ja neuvomaan koneB:n haltijaa iskemään komennot päätteeseen...
tulos, koneBssh: connect to host minun.ip port 800 connection refused ##kokeiltu myös jumala@minun.ip ei toimi
KoneA jumala@helvetti:~$ ssh localhost -p 8001
koneB ei vastaa edes ping-kyselyyn ???
ssh: connect to host localhost port 8001: Connection refused
-
Molemmissa koneissa pitää olla tietty openssh-server -paketti asennettuna
r
-
molemmissa koneissa on kyseinen paketti asennettu
jumala@helvetti:~$ apt-cache policy openssh-server
openssh-server:
Asennettu: 1:4.6p1-5build1
Ehdokas: 1:4.6p1-5build1
Versiotaulukko:
*** 1:4.6p1-5build1 0
500 http://fi.archive.ubuntu.com gutsy/main Packages
100 /var/lib/dpkg/status
toinen kone on Tampereella äitini hoivissa, laitoin viime viikonloppuna siihen gutsyn ja conffasin käyttökuntoon, myös asensin kyseisen paketin siihen, koska äitini tuntien, kone tarvitsee etä-hoitoa :)
[Edit] lisäystä portti-infoon, tämä siis minun koneella
jumala@helvetti:~$ cat /etc/ssh/ssh_config |grep Port
Port 8000
jumala@helvetti:~$ cat /etc/ssh/sshd_config |grep Port
Port 8000
jumala@helvetti:~$
Äitini koneella kyseiset portit on edelleen 22
-
Itsellä molemmissa koneissa ssh conffattu kuuntelemaan porttia 22. Vain toinen koneista on NAT:n takana, jota en pääse säätämään. Olkoon se kone A.
Siitä otan yhteyden kotikoneeseen:
ssh -R 8001:localhost:22 ville@koneen_B_IP
Eli "normaali" ssh-yhteys porttiin 22. Tosin R-vipu avaa koneelle B tunnelin, jonka osoite on localhost:8001. Eli kotiin mentyäni voin käskeä:
ssh ville@localhost -p 8001
Ja toimii.
Jos olen ymmärtänyt oikein, ovat molemmat koneesi NAT:n takana. Itselle on riittänyt säätää kotimodeemiin (toinen kone on siis töissä) portforwarding koneen B kiinteään sisäverkon IP-osoitteeseen. Eli esimerkkini koneen B kätkemään NAT-laiteeseen olisi saatava tuo portforwarding tehtyä.
-
jeps, vaihdettiin ssh portti takaisin 22 ja kokeiltiin pontvilin ohjetta
ssh -R 8001:localhost:22 jumala@minun_ip_ ## herjaa: connection refused
omalla koneellani käskin
ssh jumala@localhost -p 8001 ## herjaa: connection refused
molemmista verkkopäätteistä on seuraavat portit auki 22, 8000, 8001
-
jeps, vaihdettiin ssh portti takaisin 22 ja kokeiltiin pontvilin ohjetta
ssh -R 8001:localhost:22 jumala@minun_ip_ ## herjaa: connection refused
omalla koneellani käskin
ssh jumala@localhost -p 8001 ## herjaa: connection refused
molemmista verkkopäätteistä on seuraavat portit auki 22, 8000, 8001
Jälkimmäinen herja on varma/itsestään selvä, kun ei ensimmäisenä otettu yhteys ole saanut "takaporttia" auki.
Verkkopäätteissä portit auki "<>" tehty modeemiin porttiohjaus.
Eli useimpia modeemeja hallitaan selaimella. Sisäverkon koneella surffataan purkin osoiteeseen (esim. 192.168.1.1) ja siellä säädetään portforwarding.
"Portin avaamista" en tunne...
Tavallisesti tilannehan on tämä: Modeemi (jossa on NAT ja sitä kautta myös yleensä päällä oleva palomuuri) saa internetoperaattorilta julkisen IP:n. Tähän tulevat paketit, joita käyttäjä (eli sisäverkon kone) ei ole aloittanut, se hylkää, kuten mikä tahansa palomuuri.
Purkkiin siis säädetään tuo portforwarding ko. portin (22 tai mitä ikinä ssh on asetettu kuuntelemaan) kohdalle. Eli purkin vastaanottamat paketit (julkinen ip-osoite) päästetään sisäverkon puolelle ja määritettyyn osoitteeseen (sun kotikoneen sisäverkon kiinteä ip).
Portforwarding siis vaatii kaksi tietoa: mihin porttiin tulevan liikenteen sallitaan päästä sisäverkkoon ja mihin osoitteeseen se ohjataan. Tässä siis ehdottomasti kannattaa asettaa (sun koti-)kone käyttämään kiinteätä ip-osoitetta. Itsellä esim. se on 192.168.1.100 (koska purkkini määrittää sisäverkoksi 192.168.1.* -osoiteavaruuden).
Toivottavasti auttoi, vaikeata välillä kirjoittaa hyviä ohjeita, kun ei tiedä paljonko lukija tietää ennestään...
EDIT: Sitä konetta, josta ensimmäinen yhteys otetaan, suojaavaa purkkia ei tarvitse avata.
-
lisäinfoa;
jumala@helvetti:~$ cat /etc/palomuuri
# Generated by iptables-save v1.3.6 on Tue Oct 30 16:50:48 2007
*filter
:INPUT DROP [1391:99508]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 6881 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 6882 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1863 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4612 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8001 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT COMMIT
# Completed on Tue Oct 30 16:50:48 2007
nämä iptables säädöt on molemmissa koneissa samanlaiset
Sitten selaimella hallittaviin modeemeihin,
itselläni toimii 192.168.0.1
ja koska kyseisessä purkissa on vain yksi ethernet reikä, saa sisäverkon ip olla 192.168.02
tähän osoitteeseen on sallittu liikenne portista 22 ## sekä tietenkin muutamat muut eri ohjelmat jotka sellaisen vaatii;)
-
Toivottavasti auttoi, vaikeata välillä kirjoittaa hyviä ohjeita, kun ei tiedä paljonko lukija tietää ennestään...
Tämä on itsestään selvä, kaikille ei voi selittää kuin viisivuotiaalle, saattavat jopa ottaa vesimelonin vasempaan sieraimeen ;)
Mutta edes se että, kirjoittaa ohjeita toisille, saati auttaa on kumarruksen arvoinen suoritus.
-
Mitäs tiedoston /var/log/auth.log lopussa näkyy, kun olet yrittänyt yhteyttä. Itsellä (nyt töissä kokeiltuna) tulle onnistuneen yhteyden merkiksi rivi
Oct 30 19:18:25 localhost sshd[17211]: Accepted password for ppaavo from 10.4.4.150 port 38570 ssh2
Epäonnistunut näyttää tältä:
Oct 30 19:20:09 localhost sshd[17377]: Failed password for invalid user tottoroo from 10.4.4.150 port 54868 ssh2
,jos salasana on väärä ja tältä:
Oct 30 19:21:47 localhost sshd[17408]: Failed password for invalid user ville from 10.4.4.150 port 54870 ssh2
,jos sisään yrittää käyttäjä, joka ei ole listattu rivillä AllowUsers tiedostossa /etc/ssh/sshd.config.
Joka tapauksessa, jos yritys pääsee palomuurin läpi, pitäisi tuonne tulla jotain. Itse en käytä iptablesia, mutta kai senkin estämät tapahtumat johonkin lokiin menevät. Niitä nuuskimalla voisi viisastua.
Mutta edes se että, kirjoittaa ohjeita toisille, saati auttaa on kumarruksen arvoinen suoritus.
Sitä saa mitä tilaa, täältä olen itsekin saanut korvaamatonta opastusta.
-
Elikkäs, ratkaisu on varsin yksinkertainen :)
noudata ohjeita (http://wiki.ubuntu-fi.org/ssh-palvelin)
muokataan
gksudo gedit /etc/ssh/sshd_config
# What ports, IPs and protocols we listen for
Port 8000 # turvallisuus syistä tämä kannattaa vaihtaa pois oletuksesta (22)
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
ListenAddress 192.168.0.2 #tähän laitetaan oman koneen sisäinen ip,
edelliset muutokset ovat varsin tarpeellisia portti-ohjauksen kannalta!
käynnistetään ssh uudestaan
sudo /etc/init.d/ssh restart
tarkista että, modeemista ja palomuurista on portti avoinna asettamallesi portille!!!
hyvä tapa on noudattaa näitä ohjeita :)
kiitos, Raimo (http://forum.ubuntu-fi.org/index.php?topic=4107.msg29318#msg29318)
esim, aukaistaan portti 8000 iptables:sta
sudo iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
muista tallentaa, ja noudattaa Raimon ohjeita ;)
käynnistetään verkko uudestaan
sudo /etc/init.d/networking restart
otetaan yhteys haluttuun koneeseen :)
ssh tunnus@ulkoinen.ip.osoite -p 8000 # -p 8000 on kohdekoneen ssh portti mikä vaihdettiin pois oletuksesta
yhteys kysyy hyväksytkö yhteyden, hyväksytään ohjeen mukaisesti kirjoittamalla yes
seuraavaksi nähdäänkin seuraavaa terminaalissa
tunnus@palvelin:~$
ja hallitaan etänä toista konetta :)