Après avoir lu ce qui précède et collé tout ensemble, j'ai créé le script Perl suivant (enregistrez-le sous le nom de mssh dans /usr/bin et rendez-le exécutable) :
#!/usr/bin/perl
$iport = 13021;
$first = 1;
foreach (@ARGV) {
if (/^-/) {
$args .= " $_";
}
elsif (/^((.+)@)?([^:]+):?(\d+)?$/) {
$user = $1;
$host = $3;
$port = $4 || 22;
if ($first) {
$cmd = "ssh ${user}${host} -p $port -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no";
$args = '';
$first = 0;
}
else {
$cmd .= " -L $iport:$host:$port";
push @cmds, "$cmd -f sleep 10 $args";
$cmd = "ssh ${user}localhost -p $iport -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no";
$args = '';
$iport ++;
}
}
}
push @cmds, "$cmd $args";
foreach (@cmds) {
print "$_\n";
system($_);
}
Utilisation :
Pour accéder à HOSTC via HOSTA et HOSTB (même utilisateur) :
mssh HOSTA HOSTB HOSTC
Pour accéder à HOSTC via HOSTA et HOSTB et utiliser des numéros de port SSH par défaut et des utilisateurs différents :
mssh user1@HOSTA:1234 user2@HOSTB:1222 user3@HOSTC:78231
Pour accéder à HOSTC via HOSTA et HOSTB et utiliser le X-forwarding :
mssh HOSTA HOSTB HOSTC -X
Pour accéder au port 8080 sur HOSTC via HOSTA et HOSTB :
mssh HOSTA HOSTB -L8080:HOSTC:8080
2 votes
Pour quoi l'avez-vous utilisé ? Je veux l'utiliser pour la procuration de chaussettes. Cela fonctionnera-t-il ?
2 votes
Oui, vous devriez pouvoir utiliser la connexion tunnelée comme un proxy SOCKS, à moins que
host2
refuse le transfert0 votes
J'ai pensé à créer une enveloppe sur SSH qui permettrait de mettre en place ce système en utilisant plusieurs fois ProxyCommand.
0 votes
@prongs Avez-vous réussi à l'utiliser pour le proxy SOCKS (il y a tant d'années) ?