ssh silta

Mun pitäis saada kahden softan välillä liikenne salattua ja ajattelin hoitaa sen ssh-palvelimella. Mutta mitenkäs asia tehdään ihan käytännössä..? Eli miten openssh-palvelimen saa kuuntelemaan jotain ylimääräistä porttia (normaalin koneenhallintaportin lisäksi), avaamaan liikutettavan datan ja siirtämään tiedon johonkin uuteen porttiin selkokielisenä?
18512
Äänestä

Muut lukivat myös

Vastaukset 18

Vanhimmat

Paitsi jos ohjelmat ovat eri koneissa. Tutkiskele siinä tapauksessa ssh:n manuaaleista -L ja -R vipusten toimintaa.

Äänestä
  • "Paitsi jos ohjelmat ovat eri koneissa"

    Näinpä.

    Tarkoitus on liikuttaa dataa kahden softan välillä ihan julkisen verkon yli, lähettävään softaan mulla ei ole pääsyä, vaan palvelimen pitäisi itse osata hanskata koko touhu. Eli kun tulee huhuilua tiettyyn porttiin, palvelin purkaa ssh-salauksen ja lähettää tiedon selkokielisenä eteenpäin.

    -L ja -R vivut taitaa olla ihan clientin touhuja?

    Äänestä

  • Mulla palomuuri ohjaa julkisen verkon osoitteen palvelimelle, jossa pyörii sshd ja jonka pitäisi avata sanoma. Alkuperäisellä lähettäjällä ei siis ole (ei saa olla) tietoakaan LAN:n topologiasta.

    Äänestä

  • ........ kirjoitti:

    "Paitsi jos ohjelmat ovat eri koneissa"

    Näinpä.

    Tarkoitus on liikuttaa dataa kahden softan välillä ihan julkisen verkon yli, lähettävään softaan mulla ei ole pääsyä, vaan palvelimen pitäisi itse osata hanskata koko touhu. Eli kun tulee huhuilua tiettyyn porttiin, palvelin purkaa ssh-salauksen ja lähettää tiedon selkokielisenä eteenpäin.

    -L ja -R vivut taitaa olla ihan clientin touhuja?

    Toisessa päässä pitää olla ssh ja toisessa sshd. Kyllä toiseenkin päähän pitää pitää jotain säädettävää asentaa jotta yhteys saadaan muodostettua. Ssh:lla ei yhteyttä synny pelkästään huhuilemalla. Yhteyden aluksi suoritetaan tunnistukset ja sovitaan protokollat.

    Äänestä

  • zxcvbnm kirjoitti:

    Toisessa päässä pitää olla ssh ja toisessa sshd. Kyllä toiseenkin päähän pitää pitää jotain säädettävää asentaa jotta yhteys saadaan muodostettua. Ssh:lla ei yhteyttä synny pelkästään huhuilemalla. Yhteyden aluksi suoritetaan tunnistukset ja sovitaan protokollat.

    Niin, toki toisessa päässäkin on jotain järkeä, eli ohjelma joka ottaa ssh-yhteyden mun päässä olevaan palvelimeen. Tuo liikenne vaan pitää olla lähettäjälle läpinäkyvää, eikä yhteyden käynnistäjällä pidä olla tietoa muuta kuin julkisen verkon osoite, portti ja login-tiedoista, muu olis tarkoitus hoitaa mun päässä.

    Toinen vaihtoehto olis hoitaa touhu ssl:n avulla, mutta jos jokaista tiedonsiirtoa varten pitää luoda oma ssl-putki, homma hidastuu. Jatkuvasti auki oleva ssh-putki on nopeampi ja yhteydenvalvonta yms hoituu järjestelmätasolla.

    Äänestä

  • ......... kirjoitti:

    Niin, toki toisessa päässäkin on jotain järkeä, eli ohjelma joka ottaa ssh-yhteyden mun päässä olevaan palvelimeen. Tuo liikenne vaan pitää olla lähettäjälle läpinäkyvää, eikä yhteyden käynnistäjällä pidä olla tietoa muuta kuin julkisen verkon osoite, portti ja login-tiedoista, muu olis tarkoitus hoitaa mun päässä.

    Toinen vaihtoehto olis hoitaa touhu ssl:n avulla, mutta jos jokaista tiedonsiirtoa varten pitää luoda oma ssl-putki, homma hidastuu. Jatkuvasti auki oleva ssh-putki on nopeampi ja yhteydenvalvonta yms hoituu järjestelmätasolla.

    Ssh-putkituksella se menisi näin:

    lähettäjäkoneesta avataan ssh-yhteys vastaanottajalle, ja käytetään vipua -L, joka avaa paikallisen tunnelin. Esim. komento
    "ssh -L 8888:palvelin:8888 palvelin"
    avaa tunnelin, jossa paikalliseen porttiin 8888 tuleva liikenne ohjataan ssh:n yli palvelimen porttiin 8888. Tunnelin kohteen ei tarvitse olla sama kone kuin ssh-palvelin, mutta liikenne salataan vain ssh-palvelinkoneelle saakka.

    Jos lähettäjäkoneesta ei voi avata ssh-yhteyttä ulospäin, mutta siellä pyörii oma ssh-palvelin, voi saman tunnelin luoda vastaanottajakoneesta komennolla
    "ssh -R 8888:palvelin:8888 kone",
    joka tekee käytännössä saman kuin -L, mutta toisin päin.

    Nyt lähettävä ohjelma ottaa yhteyden localhost:8888:iin ja tämä liikenne ohjataan oikealle vastaanottajalle ssh-putken sisällä. Lisätietoa saa ssh:n dokumentaatiosta, tai "man ssh"

    Äänestä

  • fidel1 kirjoitti:

    Ssh-putkituksella se menisi näin:

    lähettäjäkoneesta avataan ssh-yhteys vastaanottajalle, ja käytetään vipua -L, joka avaa paikallisen tunnelin. Esim. komento
    "ssh -L 8888:palvelin:8888 palvelin"
    avaa tunnelin, jossa paikalliseen porttiin 8888 tuleva liikenne ohjataan ssh:n yli palvelimen porttiin 8888. Tunnelin kohteen ei tarvitse olla sama kone kuin ssh-palvelin, mutta liikenne salataan vain ssh-palvelinkoneelle saakka.

    Jos lähettäjäkoneesta ei voi avata ssh-yhteyttä ulospäin, mutta siellä pyörii oma ssh-palvelin, voi saman tunnelin luoda vastaanottajakoneesta komennolla
    "ssh -R 8888:palvelin:8888 kone",
    joka tekee käytännössä saman kuin -L, mutta toisin päin.

    Nyt lähettävä ohjelma ottaa yhteyden localhost:8888:iin ja tämä liikenne ohjataan oikealle vastaanottajalle ssh-putken sisällä. Lisätietoa saa ssh:n dokumentaatiosta, tai "man ssh"

    Mulla on siis palvelinsofta, joka kuuntelee ihan kryptaamatonta verkkoliikennettä. Jossain netin kätköissä on toisen pöljän tekemä clientti, jonka on tarkoitus jutella ssh:lla salattua tavaraa mun palvelimelle.

    En haluaisi itse alkaa vääntämään ssh-handshakea yms omaan palvelimeeni, vaan haluaisin ssh-palvelimen tekevän tuon mun puolesta ja antavan mun softalle ulospäin ihan selkokielistä tavaraa.

    Clientti --> (ssh) ---> SSHD --> (plain) --> Serveri

    Äänestä

  • ........ kirjoitti:

    Mulla on siis palvelinsofta, joka kuuntelee ihan kryptaamatonta verkkoliikennettä. Jossain netin kätköissä on toisen pöljän tekemä clientti, jonka on tarkoitus jutella ssh:lla salattua tavaraa mun palvelimelle.

    En haluaisi itse alkaa vääntämään ssh-handshakea yms omaan palvelimeeni, vaan haluaisin ssh-palvelimen tekevän tuon mun puolesta ja antavan mun softalle ulospäin ihan selkokielistä tavaraa.

    Clientti --> (ssh) ---> SSHD --> (plain) --> Serveri

    [Clientti --> ssh] --> netti --> [sshd] --> [Sereri]
    Kone on aina sulkujen sisällä.

    Lue nyt jo ne ssh:n ohjeet.

    Äänestä

  • zxcvbnm kirjoitti:

    [Clientti --> ssh] --> netti --> [sshd] --> [Sereri]
    Kone on aina sulkujen sisällä.

    Lue nyt jo ne ssh:n ohjeet.

    Voi kiitos tästä nerokkaasta ja selventävästä vastauksesta.

    Kone on aina sulkujen sisällä ->

    [Clientti --> ssh(client)] --> ISP (data kryptattu) --> [FW] (data kryptattu) --> [LAN switch] (data kryptattu) --> [sshd --> server software]


    Clientti ottaa yhteyden käskyllä

    ssh -pvv [email protected]

    ja käskyssä en pääse vaikuttamaan, muuhun kuin porttiin, osoitteeseen ja login tietoihin.

    Nämä sivut tullut pariinkin kertaan kahlattua, mutten silti saa irti mitä pitää konffi-tiedostoon säätää, jos sinulla on tieto takana, niin olisihan se ystävällistä yrittää vielä kerran...

    http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5
    http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8
    http://www.openbsd.org/cgi-bin/man.cgi?query=tun&sektion=4&arch=&apropos=0&manpath=OpenBSD Current

    Äänestä

  • ......... kirjoitti:

    Voi kiitos tästä nerokkaasta ja selventävästä vastauksesta.

    Kone on aina sulkujen sisällä ->

    [Clientti --> ssh(client)] --> ISP (data kryptattu) --> [FW] (data kryptattu) --> [LAN switch] (data kryptattu) --> [sshd --> server software]


    Clientti ottaa yhteyden käskyllä

    ssh -pvv [email protected]

    ja käskyssä en pääse vaikuttamaan, muuhun kuin porttiin, osoitteeseen ja login tietoihin.

    Nämä sivut tullut pariinkin kertaan kahlattua, mutten silti saa irti mitä pitää konffi-tiedostoon säätää, jos sinulla on tieto takana, niin olisihan se ystävällistä yrittää vielä kerran...

    http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5
    http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8
    http://www.openbsd.org/cgi-bin/man.cgi?query=tun&sektion=4&arch=&apropos=0&manpath=OpenBSD Current

    Kun laittaa optioksi -L 1234:localhost:1234 niin silloin Clientin lähetys ohjautuu Serverin porttiin 1234. Clientissä siis määrätään Serverin osoitteeksi localhost niin data menee Clienttikoneessa ssh:n sisään ja putkea pitkin Serverin porttiin 1234.

    Äänestä

  • zxcvbnm kirjoitti:

    Kun laittaa optioksi -L 1234:localhost:1234 niin silloin Clientin lähetys ohjautuu Serverin porttiin 1234. Clientissä siis määrätään Serverin osoitteeksi localhost niin data menee Clienttikoneessa ssh:n sisään ja putkea pitkin Serverin porttiin 1234.

    Hyvin ystävällistä yrittää auttaa, mutta jos vastaa johonkin muuhun kuin kysyttyyn asiaan, ei siitä ole ihan hirveästi hyötyä.

    Otetaan vielä kerran. Clientti päähän en pysty itse vaikuttamaan, eikä sen ssh-putken muodostamisessakaan ole mitään ongelmaa. Tarkoitus olisi saada ssh-palvelimeen tuleva liikenne purettua ja lähetettyä selkokielisenä eteenpäin. Putken clientti-pää on kunnossa, nyt pitäisi serveripää saada viritettyä vielä kuntoon.

    Äänestä

  • ......... kirjoitti:

    Hyvin ystävällistä yrittää auttaa, mutta jos vastaa johonkin muuhun kuin kysyttyyn asiaan, ei siitä ole ihan hirveästi hyötyä.

    Otetaan vielä kerran. Clientti päähän en pysty itse vaikuttamaan, eikä sen ssh-putken muodostamisessakaan ole mitään ongelmaa. Tarkoitus olisi saada ssh-palvelimeen tuleva liikenne purettua ja lähetettyä selkokielisenä eteenpäin. Putken clientti-pää on kunnossa, nyt pitäisi serveripää saada viritettyä vielä kuntoon.

    Siihen localhost-kohdan tilalle taitetaan kohdekoneen osoite eli -L 1234:10.10.10.10:1234. Client lähettää edelleen localhostiin.

    Silloinhan Clientin lähettämä data menee ssh-tunneliin ja toisessa päässä sshd lähettää koneelle 10.10.10.10, jossa on se Serveri.

    Äänestä

  • ......... kirjoitti:

    Hyvin ystävällistä yrittää auttaa, mutta jos vastaa johonkin muuhun kuin kysyttyyn asiaan, ei siitä ole ihan hirveästi hyötyä.

    Otetaan vielä kerran. Clientti päähän en pysty itse vaikuttamaan, eikä sen ssh-putken muodostamisessakaan ole mitään ongelmaa. Tarkoitus olisi saada ssh-palvelimeen tuleva liikenne purettua ja lähetettyä selkokielisenä eteenpäin. Putken clientti-pää on kunnossa, nyt pitäisi serveripää saada viritettyä vielä kuntoon.

    Ei käynyt ainakaan mulle selväksi aikaisemmista viesteistäsi että client ottaa suoraan yhteyden ssh:lla.. eli siis client puhuu ssh:ta, mutta palvelin ei, joten tarvitset jonkin palikan väliin poistamaan salauksen.

    Toimikohan netcat? (http://fi.wikipedia.org/wiki/Netcat ) Jos luot oman tunnuksen sovelluksen yhteyttä varten ja määrität tälle tunnukselle oletuskomentotulkiksi netcatin, esim. näin:
    "nc localhost 1234",
    niin ssh-palvelin hoitaa ensiksi tunnistautumisen, jonka jälkeen järjestelmä käynnistää netcatin, joka ohjaa kaiken saamansa liikenteen paikallisen koneen porttiin 1234.

    Paluukaista ei kylläkään tällä tavalla taida saada tehtyä, ellei onnistu jotenkin kikkailemaan netcatin back-kanavien avulla.

    Jos netcat ei täytä kaikkia vaatimuksia, koodaile vaikka jokin oma pieni ohjelma tai skripti, joka osaa välittää tarvittavat datat oikeisiin paikkoihin ja aseta se tunnuksen komentotulkiksi. Näin ei ssh-palvelimeen tarvitse koskea.

    Äänestä

  • fidel1 kirjoitti:

    Ei käynyt ainakaan mulle selväksi aikaisemmista viesteistäsi että client ottaa suoraan yhteyden ssh:lla.. eli siis client puhuu ssh:ta, mutta palvelin ei, joten tarvitset jonkin palikan väliin poistamaan salauksen.

    Toimikohan netcat? (http://fi.wikipedia.org/wiki/Netcat ) Jos luot oman tunnuksen sovelluksen yhteyttä varten ja määrität tälle tunnukselle oletuskomentotulkiksi netcatin, esim. näin:
    "nc localhost 1234",
    niin ssh-palvelin hoitaa ensiksi tunnistautumisen, jonka jälkeen järjestelmä käynnistää netcatin, joka ohjaa kaiken saamansa liikenteen paikallisen koneen porttiin 1234.

    Paluukaista ei kylläkään tällä tavalla taida saada tehtyä, ellei onnistu jotenkin kikkailemaan netcatin back-kanavien avulla.

    Jos netcat ei täytä kaikkia vaatimuksia, koodaile vaikka jokin oma pieni ohjelma tai skripti, joka osaa välittää tarvittavat datat oikeisiin paikkoihin ja aseta se tunnuksen komentotulkiksi. Näin ei ssh-palvelimeen tarvitse koskea.

    "eli siis client puhuu ssh:ta, mutta palvelin ei, joten tarvitset jonkin palikan väliin poistamaan salauksen"

    Nimenomaan... Kiitos tästä, yritän selvitellä.

    Open ssh-palvelinko ei tuohon suoraan kykene? En ole ihan saletti tarvinko edes paluukanavaa, vai voidaanko luottaa ihan protokollatasoon, jos protokollat sanoo että data meni perille, ei huolehdita enää siitä että ymmärsikö softa viestistä mitään...

    Kiitoksia.

    Äänestä

  • ........ kirjoitti:

    "eli siis client puhuu ssh:ta, mutta palvelin ei, joten tarvitset jonkin palikan väliin poistamaan salauksen"

    Nimenomaan... Kiitos tästä, yritän selvitellä.

    Open ssh-palvelinko ei tuohon suoraan kykene? En ole ihan saletti tarvinko edes paluukanavaa, vai voidaanko luottaa ihan protokollatasoon, jos protokollat sanoo että data meni perille, ei huolehdita enää siitä että ymmärsikö softa viestistä mitään...

    Kiitoksia.

    ei ssh-palvelimen ole tarkoituskaan tuommoisia osata. Se mitä esim. openssh-palvelin tekee on hoitaa tunnistus, purkaa sisääntulevan datan salaus ja salata ulospäin menevä liikenne. Palvelin käynnistää tunnistuksen jälkeen jonkun prosessin, yleensä komentotulkin, johon kaikki sisääntuleva data ohjataan, ja jonka stdouttiin tai stderroriin kirjoittamat datat lähetetään toiseen päähän.

    Eli voit tietenkin myös muuttaa sen sun palvelinohjelman kuuntelemaan stdio:ta ja määrittää ssh-palvelin käynnistämään tämän ohjelman, niin sun ei tartte paikallisessa koneessa ohjailla mitään tcp-portteja.

    Äänestä

  • fidel1 kirjoitti:

    ei ssh-palvelimen ole tarkoituskaan tuommoisia osata. Se mitä esim. openssh-palvelin tekee on hoitaa tunnistus, purkaa sisääntulevan datan salaus ja salata ulospäin menevä liikenne. Palvelin käynnistää tunnistuksen jälkeen jonkun prosessin, yleensä komentotulkin, johon kaikki sisääntuleva data ohjataan, ja jonka stdouttiin tai stderroriin kirjoittamat datat lähetetään toiseen päähän.

    Eli voit tietenkin myös muuttaa sen sun palvelinohjelman kuuntelemaan stdio:ta ja määrittää ssh-palvelin käynnistämään tämän ohjelman, niin sun ei tartte paikallisessa koneessa ohjailla mitään tcp-portteja.

    "voit tietenkin myös ... määrittää ssh-palvelin käynnistämään tämän ohjelman"

    Niin tuohan on oikeastaan tismalleen sitä mitä haluankin, ohjata kaiken porttiin tulevan liikenteen raakana mun softalle luettavaks. IO:n lukeminen omalla softalla ei ole mikään ongelma, mutta mitenköhän tuon palvelimen osuuden saa aikaan...?

    Äänestä

  • ......... kirjoitti:

    "voit tietenkin myös ... määrittää ssh-palvelin käynnistämään tämän ohjelman"

    Niin tuohan on oikeastaan tismalleen sitä mitä haluankin, ohjata kaiken porttiin tulevan liikenteen raakana mun softalle luettavaks. IO:n lukeminen omalla softalla ei ole mikään ongelma, mutta mitenköhän tuon palvelimen osuuden saa aikaan...?

    Voit määrittää käynnistettävän ohjelman client-päässä, ssh-komennon yhteydessä, jotenkin näin:
    "ssh palvelin komento", jolloin tunnistautumisen jälkeen ajetaan "komento". Voit ehkä tarvita jotain lisävipuja, jotta terminaalit ym. menee oikein, mutta periaatteessa noin.

    Tai, luot yhteyttä varten oman, dedikoidun käyttäjän, jonka oletuskomentotulkiksi asetat halutun ohjelman. Komentotulkin voi asettaa käyttäjää luotaessa, useradd-komennon s-vivulla tai jälkeenpäin ajamalla komennon chsh. Mahdollista on myös käyttää käyttäjän käynnistys-skriptiä, (.bashrc, jos käytössä bash) ja käynnistää ohjelma sieltä käsin.

    Äänestä

  • fidel1 kirjoitti:

    Voit määrittää käynnistettävän ohjelman client-päässä, ssh-komennon yhteydessä, jotenkin näin:
    "ssh palvelin komento", jolloin tunnistautumisen jälkeen ajetaan "komento". Voit ehkä tarvita jotain lisävipuja, jotta terminaalit ym. menee oikein, mutta periaatteessa noin.

    Tai, luot yhteyttä varten oman, dedikoidun käyttäjän, jonka oletuskomentotulkiksi asetat halutun ohjelman. Komentotulkin voi asettaa käyttäjää luotaessa, useradd-komennon s-vivulla tai jälkeenpäin ajamalla komennon chsh. Mahdollista on myös käyttää käyttäjän käynnistys-skriptiä, (.bashrc, jos käytössä bash) ja käynnistää ohjelma sieltä käsin.

    "luot yhteyttä varten oman, dedikoidun käyttäjän, jonka oletuskomentotulkiksi asetat halutun ohjelman"

    Niinpä tietenkin! Nyt homma toimii just niin kuin haluan, iso kiitos!

    Äänestä

Kommentoi aloitusta


........ kirjoitti:

Mun pitäis saada kahden softan välillä liikenne salattua ja ajattelin hoitaa sen ssh-palvelimella. Mutta mitenkäs asia tehdään ihan käytännössä..? Eli miten openssh-palvelimen saa kuuntelemaan jotain ylimääräistä porttia (normaalin koneenhallintaportin lisäksi), avaamaan liikutettavan datan ja siirtämään tiedon johonkin uuteen porttiin selkokielisenä?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu