ssh tunneling question

nk eos at eos.gr
Fri Jul 6 16:13:07 EEST 2012


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

θανκς



More information about the Linux-greek-users mailing list