conssh.sh - Frontend para SSH via proxy HTTP
Publicado por Flávio Augusto (última atualização em 07/11/2010)
[ Hits: 5.473 ]
Homepage: http://twitter.com/facmachado
Frontend para SSH via Proxy HTTP. Requer o OpenSSH e o ProxyTunnel instalados na máquina. Testado inclusive com o Cygwin.
#!/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
get-geo2 - localiza o endereço de um IP/HOST no Google Maps
Intervalo de tempo v.2 - Corrigido
olhaMeuDesktop 0.1 - Aplicativo para gravar Área de Trabalho
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Programa fora de escala na tela do pc (36)
Instalação dualboot Windows 11 e Debian 13 (0)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









