Domaine public 🅭

CMS minimal
ecrit avec VI

[ /  ^ < ]

Corkscrew

tunnel TCP en particulier SSH à travers un proxy HTTP

usages       30/04/2025
autres commandes       19/11/2024

sudo apt-get install corkscrew

ssh toto@nom.serveur.cible -o "ProxyCommand corkscrew nom.serveur.proxy 8080 %h %p"

# pour éviter de saisir les options à chaque fois, on peut les mettre
# dans un fichier déclarant les adresses des machines accessibles par le tunnel
cat >>  ~/.ssh/config << FIN
Host nom_au_choix
        Hostname nom.serveur.cible
        ProxyCommand /usr/bin/corkscrew nom.serveur.proxy 8080 %h %p
FIN

# il est possible que le proxy déconnecte sur non activité
# parfois au bout de moins d'une minute
# utiliser autossh
# ???? on pert le contexte par exemple on se retrouve dans le repertoire d'acceuil et sorti de l'appliaction en cours
#         sur redhat il faut préciser Ipv4 et le port
alias autossh='autossh -4 -M 50800'

# sinon on peut tenter quelques bricolages:

# à mettre dans .profile pour envoyer un code nul toutes les 15 secondes
# la commande trap sert à empecher que le ^C arrete la boucle
# les parenteses servent à lancer un sous shell pour que la commande trap ne s'applique pas à la session
# le "et commercial" à la fin sert à mettre en tâche de fond
( trap : 2; while sleep 15; do echo -ne '\0'; done ) &

# ou à mettre dans un alias qui affiche jusqu'à l'appui sur une touche non muette
alias +++='until read -p + -n 1 -t 3; do :; done'


# solution canonique si on dispose du compte root

# pour un resultat immédiat:
echo 40 > /proc/sys/net/ipv4/tcp_keepalive_time

# pour pereniser:
echo "net.ipv4.tcp_keepalive_time = 40" >> /etc/sysctl.conf

# tunnel temporaire si le proxy laisse passer tous les ports (il ne devrait pas mais ça arrive )
# ne dure que le temps de la connexion :
socat TCP-listen:6666 PROXY:nom.serveur.proxy:nom.serveur.cible:22

# sur une autre machine ou en boucle avec l'adresse 127.0.0.1
ssh -p 6666 utilisateur@adresse.machine.intermediaire

# on peut aussi s'amuser à faire un routage à usage unique
socat TCP-listen:6666 TCP:nom.serveur.cible:22

# la clé de la machine cible est prise pour celle de la machine intermédiaire
# il faut mettre une option pour tout mettre à la poubelle et éviter les blocages
ssh -o UserKnownHostsFile=/dev/null -p 6666 utilisateur@adresse.machine.intermediaire


# commande équivalente à corkscrew apt-get install connect-proxy ssh toto@nom.serveur.cible -o "ProxyCommand connect-proxy -H nom.serveur.proxy:8080 %h %p"

ƒraηcois✉memoρersο.ƒr