Du willst deinen Rasberry Pi ohne öffentliche IP-Adresse (ohne NAT) im privaten LAN hinter der Firewall ohne VPN permanent verbinden?
Zum Beispiel um mit einem VNC-Client auf der Home-Machine auf einen entfernten Raspberry Pi zugreifen (tightvncserver) zu können.
Home-Machine <-> (Firewall) <-> VServer <-> (Firewall) <-> Raspberry Pi
Folgende Lösung habe ich im Netz dazu gefunden:
http://www.sayargyi.com/content/?p=349
Leider wollte das Script im Crontab nicht laufen.
Also habe ich das Script "autossh" wie folgt modifiziert:
#!/bin/bash
source /home/pi/ssh-agent.cf
REMOTE_HOST=vserver_ip
USER_NAME=vserver_user
# $REMOTE_PORT is the remote port number that will be used to tunnel
# back to this system
REMOTE_PORT=15901
# $COMMAND is the command used to create the reverse ssh tunnel
COMMAND="ssh -t -t -q -R $REMOTE_PORT:localhost:5901 $USER_NAME@$REMOTE_HOST"
# Is the tunnel up? Perform two tests:
# 1. Check for relevant process ($COMMAND)
echo "CheckCheck for relevant process"
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND
# 2. Test tunnel by looking at “netstat” output on $REMOTE_HOST
echo "Test tunnel by looking at netstat"
ssh $USER_NAME@$REMOTE_HOST netstat -an | egrep "tcp.*:$REMOTE_PORT.*LISTEN" > /dev/null 2>&1
if [ $? -ne 0 ] ; then
echo "Killing existing process"
pkill -f -x "$COMMAND"
$COMMAND
fi
Alles anzeigen
SSH-Agent einrichten:
Die Datei ssh-agent.cf wird wie folgt erzeugt:
http://unix.stackexchange.com/a/9947
Tunnel mit der Home-Machine aufbauen:
Mit Putty oder dem Terminal (cmd):
ssh -L localhost:5901:localhost:15901 vserver_user@vserver_ip
VNC-Client starten und verbinden:
Host: localhost:5901