SSH tunnelien ketjuttaminen

Discussion in 'Linux -keskustelu' started by stuubr, Jul 7, 2010.

  1. stuubr

    stuubr Member

    Joined:
    Oct 16, 2006
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    11
    En ole aivan varma, että tuliko oikeeseen ketjuun, mutta anyway.

    Onko mahdollista ketjuttaa SSH tunneleita yhdellä komennolla terminaalista? Siis, että ei tarvitse erikseen luoda aina uutta tunnelia manuaalisesti kun on luonut edellisen tunnelin.

    Case: SSH tunneli hostilta A -> B -> C -> D

    Nyt muodostan tunnelin seuraavasti:

    host A: ssh -L 5903:localhost:5904 käyttäjätunnusB@hostB.fi

    host B: ssh -L 5904:localhost:5905 käyttäjätunnusC@hostC.fi

    host C: ssh -L 5905:localhost:5900 käyttäjätunnusD@hostD.fi

    Eli onko kyseinen tunnelien ketjuttaminen mahdollista yhden rivin komennolla hostilta A? Jos on niin kuinka?
     
  2. Betrayed

    Betrayed Moderator Staff Member

    Joined:
    Oct 12, 2004
    Messages:
    1,585
    Likes Received:
    2
    Trophy Points:
    68
    Onnistuu, lisäät vaan ~/.bashrc tiedostoon rivin:

    alias tunneliketju='ssh -L 5903:localhost:5904 käyttäjätunnusB@hostB.fi && ssh -L 5904:localhost:5905 käyttäjätunnusC@hostC.fi && ssh -L 5905:localhost:5900 käyttäjätunnusD@hostD.fi'

    ja "tunneliketju"-sanan paikalle voit laittaa minkä tahansa sanan, jatkossa ton ketjun luominen tapahtuu kirjoittamalla vain "tunneliketju" konsoliin.
     
  3. stuubr

    stuubr Member

    Joined:
    Oct 16, 2006
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    11
    Kiitos vinkistä!

    Itseasissa tuo ei komento ei suoraan yhdistänyt hostille D vaan ensiksi hostille B ja siellä loggaamalla ulos yhdisti suoraan hostille C jne.

    Ongelma kuitenkin ratkesi jättämällä && pois komennosta:

    tunneliketju='ssh -L 5903:localhost:5904 käyttäjätunnusB@hostB.fi ssh -L 5904:localhost:5905 käyttäjätunnusC@hostC.fi ssh -L 5905:localhost:5900 käyttäjätunnusD@hostD.fi'

    Ensiksi tämä herjasi seuraavaa: "Pseudo-terminal will not be allocated because stdin is not a terminal.". Lisäämällä flag -t tunnelointi onnistui kuitenkin halutulla tavalla. Eli:

    tunneliketju='ssh -t -L 5903:localhost:5904 käyttäjätunnusB@hostB.fi ssh -t -L 5904:localhost:5905 käyttäjätunnusC@hostC.fi ssh -L 5905:localhost:5900 käyttäjätunnusD@hostD.fi'
     
  4. Betrayed

    Betrayed Moderator Staff Member

    Joined:
    Oct 12, 2004
    Messages:
    1,585
    Likes Received:
    2
    Trophy Points:
    68
    Noh, kukaan ei ole täydellinen :) hyvä että jotain tuosta pysty kuitenkin käyttämään, kun ei ollut linux-konetta lähistöllä millä olisin mokomaa voinut testata.

    Pääasia kuitenkin että toimii.
     

Share This Page