ssh tunneling question

nk eos at eos.gr
Sat Jul 7 00:25:44 EEST 2012


nk wrote:
> nk wrote:
>> On 06/07/12 13:38, Nick Demou wrote:
>>> καμιά φορά κάποιος φίλος με παίρνει τηλέφωνο και έχει πρόβλημα στο
>>> Linux PC του. Για να συνδεθώ με VNC του ζητάω να τρέξει κάτι σαν αυτό:
>>>
>>> friends-pc>  ssh -N -R 11159:localhost:5900 my-server
>>>
>>> μετά μπορώ να συνδεθώ τρέχοντας από τον server μου έναν vnc client
>>> προς το localhost:11159.  Nα και η αναπαράσταση του πως δρομολογείτε η
>>> σύνδεση μου:
>>>                                     ________
>>>                                    /        \
>>>                     ____          _\___      \
>>>                    |    |~~~~~~~~|  \  |      \
>>>           /`->11159:----:--------:--'  :5900<-'
>>>           \        |    |~~~~~~~~|     |
>>>            \   ,---<     |   ^    |     |
>>>             \_/    |____|   |    |_____|
>>>                  my-server  |   friends-pc
>>>                             |
>>>                         ssh tunnel
>>>
>>>
>>> επειδή όμως ο server δεν έχει γραφικό περιβάλλον θέλω να τρέχω τον vnc
>>> client από το PC μου το οποίο είναι στο ίδιο δίκτυο με τον server.
>>> Αναρωτιόμουν λοιπόν αν υπάρχει τρόπος όταν δίνει ο φίλος μου την πρώτη
>>> εντολή ssh να ακούει ο my-server όχι μονο στο localhost:11159 αλλά και
>>> στο eth0:11159?
>>>
>>> Για την ώρα ξεπερνώ το εμπόδιο δια της πλαγίας οδού δημιουργώντας άλλο
>>> ένα ssh-tunnel από το PC μου προς τον server [1] και μετά κάνω vnc
>>> σύνδεση προς το localhost:11111 η οποία δρομολογείται στον
>>> server:11159 η οποία με τη σειρά της δρομολογείται στο friends-pc
>>> 5900... Με λίγα λόγια εν τέλη όλα λειτουργούν και τώρα _αλλά_ είναι
>>> σκέτη σπαζοκεφαλιά και στα 42 μου προσπαθώ να αποφεύγω όσες
>>> σπαζοκεφαλιές γίνεται.
>>>
>>> ν.
>>> __________
>>> [1] τρέχοντας στο PC μου πρώτα αυτό: ssh -L 11111:localhost:11159
>>> my-server
>>>
>>
>> δεν ειμαι απολυτα σιγουρος οτι εχω καταλαβει ακριβως την ερωτηση (ιδιως
>> στο σημειο της αναγκης tunnel ως τον server/router σου, δεν σε
>> μεταγλωτιζει εξ ορισμου οταν ζητας μια συνδεση προς τα εξω; σε κοβει ο
>> firewall σου;). εν πασει περιπτωσει εγω χρησιμοποιω στο τηλεφωνο μου ενα
>> scriptακι γι αυτες τις περιπτωσεις οπου δεν χρειαζεται ο remote χρηστης
>> να τρεξει κατι - με την προϋποθεση οτι τρεχει εκει sshd και vncserver
>> ανεξαρτητα λειτουργικου:
>>
>> -----
>>
>> #!/bin/bash
>> echo
>> # version 0.0.2
>> echo please choose viewer
>> echo "  1/p:  presence    2/r:  real  "
>> read -t8 viewer
>> if [ "$viewer" == "2" -o "$viewer" == "r" ]
>> then vncclient=vncviewer ; else vncclient=presencevnc ; echo -e
>> '\e[1;34m'
>> echo n900´s Fn key IS NOT sticky within vnc screen  HOLD it DOWN to use
>> echo -ne '\e[0;30m'
>> sleep 2 ; fi
>> echo
>> echo do you need security? y/n
>> read -t8 secure
>> if [ "$secure" == "n" ] ; then $vncclient
>> else
>> echo please enter remote host to connect to
>> echo "user at host:port"
>> read -t36 remote
>> echo
>> uhost=`echo $remote | awk -F: '{print $1}'`
>> rpo=`echo $remote | awk -F: '{print $2}'`
>> if [ -z "$rpo" ] ; then rpo=5600
>> elif [ $rpo -ge 0 -a $rpo -le 2048 ] ; then rpo=$((5600+$rpo)) ; fi
>> lpo= ; for p in `seq 6 9` ; do if [ -z "$lpo" ] ; then
>> if [ `netstat -nlt | grep [127,0]\.0\.0\.[0,1]:[1-9] \
>> | grep -c \.[0,1]:596$p\ ` -eq 0 ] ; then lpo=596$p ; fi ; fi ; done
>> if [ -z "$lpo" ] ; then echo
>> echo '   weird !!   not available local port to bind to'
>> echo '          blame me or check your system '
>> sleep 2 ; echo '   ..giving up ..! ' ; echo
>> sleep 4 ; exit ; fi
>> #lpo= ; p=5960 ; until [ -n "$lpo" ] do
>> #if [ `netstat -nlt | grep [127,0]\.0\.0\.[0,1]:[1-9] \
>> #| grep -c \.[0,1]:$p\ ` -eq 0 ] ; then lpo=$p
>> #else p=$((1+$p)) ; fi ; done
>> ssh -o PreferredAuthentications=password \
>> -C -f -t -x -L $lpo:localhost:$rpo $uhost sleep 44
>> echo
>> # echo $lpo:localhost:$rpo $uhost
>> echo -e "connect to:  \e[0;35m localhost:$lpo \e[0;30m"
>> echo ; echo
>> sleep 4
>> $vncclient
>> fi
>>
>> -----
>>
>> ελπιζω να σου φανει χρησιμο με πιθανες αναγκαιες τροποποιησεις οπως στις
>> πορτες που βλεπω πως προτιμας αλλες και στις εφαρμογες που χρησιμοποιεις
>> ως clients
>>
>> θανκς
>>
>>
>
> μαλιστα, διαβαζοντας με λιγο μεγαλυτερη ανεση καταλαβα τι ρωτας,
> χρειαζεσαι μονο να αυτοματοποιησεις το κομματι απο το pc σου στο server
> σου κι αυτο γινεται με το εξης κομματι:
>
> #!/bin/bash
> ssh -o \
> -C -f -t -x -L 11111:localhost:11159 my-server sleep 44
> $vncclient localhost:11111
>
>
> και να καλεις το script αντι για τον vncclient[1] σου
> 1: σου προτεινω tightvnc αν τρεχεις απο Linux ή ultravnc απο ms
> αλλά αυτά είναι γούστα
>
> θανκς
>
>

ειναι προφανες οτι σου γραφω ασυναρτησιες, πραγμα που εν μερει 
δικαιολογειται απο το γεγονος οτι ειχα μια περιπλοκη μερα

αυτο που ψαχνεις ειναι να τρεχει ο φιλος σου κατι σαν
friends-pc>  ssh -N -R 192.168.xx.xx:11159:localhost:5900 my-server
οπου 192.168.χχ.χχ η ip του εσωτερικου δικτυου του server σου
υπο την προυποθεση οτι εχεις προσθεσει στο τελος του sshd_config του 
server σου

Match User myfriend
GatewayPorts yes

πιθανοτατα δεν χρειαζεται να δινει την εσωτερικη ip ο απεναντι,
αν γινει η καταχωρηση στο /etc/ssh/sshd_config τοτε μαλλον παιζει 
οποιαδηποτε απ τις τρεις μορφες:

friends-pc>  ssh -N -R 192.168.xx.xx:11159:localhost:5900 my-server
friends-pc>  ssh -N -R :11159:localhost:5900 myfriend at my-server
friends-pc>  ssh -N -R 11159:localhost:5900 myfriend at my-server

απλα δοκιμασε

συγνωμη για τα ασχετα προηγουμενα μηνυματα


More information about the Linux-greek-users mailing list