Domaine public 🅭

CMS minimal
ecrit avec VI

[ /  ^ < ]

Corkscrew

tunnel TCP en particulier SSH à travers un proxy HTTP

usages       05/06/2026
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
#         gère mal le titre des onglé du terminal
#         petit script pour aranger ça
#!/bin/bash echo -ne "\033]30;$1\007" autossh $@ # 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