Benutzer-Werkzeuge

Webseiten-Werkzeuge


dos:ssh-tunnel

Tunnel über ssh

Baut einen Tunnel über SSH mit plink.exe von den PuTTy-Tools auf. Zuerst muss aber der Key/Fingerprint mit PuTTY geladen werden!

plink_tunnel.cmd
@echo off

REM ############################################################################
REM
REM file: plink_tunnel.cmd
REM Version 0.0.2 27.02.2009 Mark Wolfgruber
REM
REM open a tcp tunnel over ssh
REM
REM ############################################################################
 
:presettings
rem If you want you can define the presettings here
rem ATTENTION Password is allways not encrypted
rem save passwords here on your own risk!
 
  if "%__ssh_port__%"=="" set __ssh_port__=22
  if "%__remote_host__%"=="" set __remote_host__=IP_or_SERVERNAME
  if "%__remote_port__%"=="" set __remote_port__=3389
  if "%__local_port__%"=="" set __local_port__=33891
  if "%__username__%"=="" set __username__=%USERNAME%
  if "%__pw__%"=="" set __pw__=
 
:define_vars
  set __plink__=%ProgramFiles%\PuTTY\PLINK.EXE
  if not exist "%__plink__%" (
    echo.
    echo ERROR can not find %__plink__%
    echo.
    pause
    goto end
  )
 
:menu
 
  set __choice__=
  cls
  echo.
  echo Open a tunnel Session via ssh
  echo =============================
  echo.
  echo active settings:
  echo    remote Host [%__remote_host__%] (ssh Port: %__ssh_port__%)
  echo    remote Application Port [%__remote_port__%]
  echo    local Port [%__local_port__%]
  echo    Username [%__username__%]
 
  echo.
  echo Mainmenu
  echo --------
  echo.
  echo O = open tunnel
  echo M = modify or set settings
  echo A = active ports on localhost
  echo. 
  echo L = load settings 
  echo S = save settings
  echo. 
  echo E = End and Exit
  echo. 
 
  set /P __choice__=Your Choice [%__choice__%]:
 
  if "%__choice__%"=="m" set __choice__=M
  if "%__choice__%"=="M" call :modify_settings
 
  if "%__choice__%"=="a" set __choice__=A
  if "%__choice__%"=="A" call :show_open_ports
 
  if "%__choice__%"=="l" set __choice__=L
  if "%__choice__%"=="L" call :load_settings
 
  if "%__choice__%"=="s" set __choice__=S
  if "%__choice__%"=="S" call :save_settings
 
  if "%__choice__%"=="e" set __choice__=E
  if "%__choice__%"=="E" goto end
 
  if "%__choice__%"=="o" set __choice__=O
  if "%__choice__%"=="O" (
    call :check_pw 
    if "%__ssh_port__%"=="" (
      echo no ssh setting set or loaded...
      pause
      set __choice__=
      )
    if "%__remote_host__%"=="" (
      echo no remote host setting set or loaded...
      pause
      set __choice__=
      )
    if "%__remote_port__%"=="" (
      echo no remote port setting set or loaded...
      pause
      set __choice__=
      )
    if "%__local_port__%"=="" (
      echo no local port setting set or loaded...
      pause
      set __choice__=
      )
    if "%__username__%"=="" (
      echo no username setting set or loaded...
      pause
      set __choice__=
      )
    if "%__pw__%"=="" (
      echo no password set or loaded...
      pause
      set __choice__=
      )
    )
   if "%__choice__%"=="O" call :open_tunnel
 
goto menu

REM ############################################################################
 
:functions
 
:header  
  cls
  echo.
  echo Open a tunnel Session via ssh
  echo =============================
  echo.
  goto :EOF
 
:modify_settings  
  call :header
  set /P __remote_host__=remote Host [%__remote_host__%]:
  set /P __ssh_port__=ssh Port [%__ssh_port__%]:
  set /P __remote_port__=remote Application Port [%__remote_port__%]:
  set /P __local_port__=local Port [%__local_port__%]:
  set /P __username__=Username [%__username__%]:
  set /P __pw__=Password [%__pw__%]:
  goto :EOF
 
:show_open_ports
  cls
  netstat -a -n  | findstr /i "LISTENING ABHÖREN" | more
  pause
  goto :EOF
 
:open_tunnel
  start "Tunnel localhost:%__local_port__% -> %__remote_host__%:%__remote_port__%" "%__plink__%" -v -ssh -2 -N -batch -L %__local_port__%:%__remote_host__%:%__remote_port__% -l %__username__% %__remote_host__% -P %__ssh_port__% -pw %__pw__%
  goto :EOF
 
:load_settings
  call :header
  echo This is a future function
 
  if "%__dat_file__%"=="" for /F "tokens=1* delims=" %%A in ('dir /s/b/od "%APPDATA%\tunnel_*.dat"') do set __dat_file__=%%A
 
  echo Folder/Files to display (use ? or * as Wildcard)
  echo %__dat_file__%
  set /P __dat_file__=type new path\file or press ENTER:
 
  for /F "eol=# tokens=1,2,3,4,5,6,7,8,9* delims=:#" %%A in ('type "%__dat_file__%"') do (
    set __remote_host__=%%A
    set __ssh_port__=%%B
    set __remote_port__=%%C
    set __local_port__=%%D
    set __username__=%%E
    set __pw__=%%F
    if "%__pw__%"=="#" set __pw__=
    if "%__pw__%"==" " set __pw__=
   )
  echo.
  call :check_pw 
  rem pause
  goto :EOF
 
:check_pw
  if "%__pw__%"=="" (
    echo Password is not set!
    set /P __pw__=Set Password:
  )
  goto :EOF
 
:save_settings
  call :header
  echo This is a future function
 
 
  set __dat_file__=%APPDATA%\tunnel_%__remote_host__%-%__remote_port__%.dat
  echo File to save the settings
  echo %__dat_file__%
  set /P __dat_file__=type new path\file or press ENTER:
 
  echo %__remote_host__%:%__ssh_port__%:%__remote_port__%:%__local_port__%:%__username__%:# > "%__dat_file__%"
rem  echo %__remote_host__%:%__ssh_port__%:%__remote_port__%:%__local_port__%:%__username__%:%__pw__% > "%__dat_file__%"
 
  echo.
  type "%__dat_file__%"
  echo.
  echo saved to File "%__dat_file__%"
  echo.
  pause
  goto :EOF
 
:end
  echo.
  echo Script is terminating ...
  echo.
  pause
dos/ssh-tunnel.txt · Zuletzt geändert: 2013/07/02 09:24 von Admin