Pular para o conteúdo

conssh.sh - Frontend para SSH via proxy HTTP

Frontend para SSH via Proxy HTTP. Requer o OpenSSH e o ProxyTunnel instalados na máquina. Testado inclusive com o Cygwin.
Flávio Augusto facmachado
Hits: 5.675 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Frontend para SSH via Proxy HTTP. Requer o OpenSSH e o ProxyTunnel instalados na máquina. Testado inclusive com o Cygwin.
Download conssh.sh Enviar nova versão

Esconder código-fonte

#!/bin/bash


################################################################################
##
##  *** conssh.sh ***
##
##  Autor:  Flavio Augusto Cardoso Machado
##
##  E-mail: facmachado arroba gmail ponto com
##
##  Data de criacao: 15/10/2010
##
##  Licenciado sob os termos da Control+C Control+V Public License (CCCV)
##
##  "JESUS TE AMA. USE LINUX!"
##
################################################################################
##
##  Descricao: Frontend para acessar o servidor SSH via servidor Proxy.
##             Requer o OpenSSH e o ProxyTunnel instalados
##
################################################################################


# Este programa
THIS=$(basename $0)

# Mensagens de erro
DOHELP="Usage: $THIS [-k keyfile] -u user -h host:port [-p proxy:port] [-t srcport:dstport] [-c \"cmd\"]"
NOPROG="$THIS: Are OpenSSH and ProxyTunnel installed?"
NOHOST="$THIS: Inform ssh server address"

# Verificando a existencia dos aplicativos
SSH=$(which ssh)
TUNNEL=$(which proxytunnel)
[ ! -x "$SSH" ] && echo "$NOPROG" && exit 1
[ ! -x "$TUNNEL" ] && echo "$NOPROG" && exit 1

# Definindo o servior ssh a ser acessado (endereco[:porta])
dohost() {
   if [ "$(echo $1|grep :)" ]; then
      _host=$(echo $1|cut -d: -f1)
      _port=$(echo $1|cut -d: -f2)
   else
      _host=$1
      _port=22
   fi
}

# Definindo o servidor proxy, opcional (endereco:porta)
doproxy() {
   read -p "Proxy user (hit <ENTER> for none): "  p_user
   read -s -p "Proxy password (hit <ENTER> for none): " p_pwd
   if [ "$p_user" ] && [ "$p_pwd" ]; then
      _proxy="-o 'ProxyCommand $TUNNEL -p $1 -P $p_user:$p_pwd -d $_host:$_port'"
   else
      _proxy="-o 'ProxyCommand $TUNNEL -p $1 -d $_host:$_port'"
   fi
}

# Definindo a porta a ser tunelada por ssh, tambem opcional (origem:destino)
dotunnel() { 
   if [ "$(echo $1|grep :)" ]; then
      s_port=$(echo $1|cut -d: -f1)
      d_port=$(echo $1|cut -d: -f2)
   else
      s_port=$1
      d_port=$1
   fi
   _tun="-L $s_port:127.0.0.1:$d_port"
}

# Mensagem do comando sem parametros
[ ! "$*" ] && echo "$DOHELP" && exit 0

# Loop para organizar os parametros do comando
while (("$#")); do
   case $1 in
      -c) if [ "$2" ]; then _cmd="$2"; fi ;;
      -p) if [ "$2" ]; then doproxy $2; fi ;;
      -t) if [ "$2" ]; then dotunnel $2; fi ;;
      -k) if [ "$2" ]; then _key="-i $2"; fi ;;
      -u) if [ "$2" ]; then _user="-l $2"; fi ;;
      -h) [ ! "$2" ] && echo "$NOHOST" && exit 1; dohost $2 ;;
   esac
   shift
done

# Agora, executar o programa
echo
bash -c "$SSH $_key $_user -p $_port $_proxy $_tun $_host '$_cmd'"
exit 0

Monitorando processo do Squid em diferentes redes

Backup compactado

Firewall com iproute2 para 2 links com ip fixo

Script para acessar terminais LInux e Unixes remotos do XDM

Instalador autônomo Zabbix 3.2.1 no CentOS 6

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.