conssh.sh - Frontend para SSH via proxy HTTP
Publicado por Flávio Augusto (última atualização em 07/11/2010)
[ Hits: 5.467 ]
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
Configurando CISCO por Shell Script
Gerenciamento de espaço em disco
BACKUP para micros com Windows XP utilizando o share administrativo ( C$ )
Nenhum comentário foi encontrado.
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
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (16)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









