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