J'essaye de configurer le saut automatique de SSH à travers un server qui n'a pas de nc.
Cela fonctionne à partir de la command line:
ssh -A gateway ssh steve@target
(J'ai ajouté ma key publique à l'agent SSH).
Cependant, l'append à ~ / .ssh / config ne le fait pas:
Host target User steveb ProxyCommand ssh -A gateway ssh steve@targetip $ ssh target Pseudo-terminal will not be allocated because stdin is not a terminal. ^CKilled by signal 2.
Tenter de forcer le problème avec -t
est amusant mais inutile.
ProxyCommand ssh -A -t gateway ssh steve@targetip $ ssh target Pseudo-terminal will not be allocated because stdin is not a terminal. Pseudo-terminal will not be allocated because stdin is not a terminal. ^CKilled by signal 2.
Plus-t? Pas bien.
ProxyCommand ssh -A -t -t gateway ssh steve@targetip $ ssh target tcgetattr: Inappropriate ioctl for device ^CKilled by signal 2.
Est-ce possible? La plupart des tutoriels (par exemple http://www.arrfab.net/blog/?p=246 ) suggèrent d'utiliser nc
.
La command ProxyCommand est très utile lorsque les hôtes ne sont accessibles qu'indirectement. Avec netcat c'est relatif vers l'avant:
ProxyCommand ssh {gw} netcat -w 1 {host} 22
Ici {gw} et {host} sont des espaces réservés pour la passerelle et l'hôte.
Mais c'est aussi possible quand netcat n'est pas installé sur la passerelle:
ProxyCommand ssh {gw} 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'
Le / dev / tcp est une fonctionnalité embeddede de bash standard. Les files n'existent pas. Pour vérifier si bash a cette fonctionnalité embeddede, utilisez run:
cat < /dev/tcp/google.com/80
… sur la passerelle.
Pour vous assurer que bash est utilisé, utilisez:
ProxyCommand ssh {gw} "/bin/bash -c 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'"
Et cela fonctionne même avec ControlMaster.
(Mis à jour le 22 octobre pour inclure kill pour nettoyer le chat de fond) (Mis à jour le 3 mars 2011 pour rendre les espaces réservés plus clairs et expliquer / dev / tcp)
100% de crédit à roland schulz. Voici la source:
http://www.rschulz.eu/2008/09/ssh-proxycommand-without-netcat.html
voir plus d'informations utiles dans les commentaires.
Il y a aussi plus ici:
http://www.linuxjournal.com/content/tech-tip-tcpip-access-using-bash
http://securityreliks.securegossip.com/2010/08/enabling-devtcp-on-backtrack-4r1ubuntu/
MISE À JOUR : voici quelque chose de nouveau de Marco
En reference à une ProxyCommand dans ~ / .ssh / config où l'on a une ligne comme ceci:
ProxyCommand ssh gateway nc localhost %p
Marco dit:
Vous n'avez pas besoin de netcat si vous utilisez une version récente d'OpenSSH. Vous pouvez replace nc localhost% p par -W localhost:% p.
Le résultat ressemblerait à ceci:
ProxyCommand ssh gateway -W localhost:%p
Big T, pas trop t.
-T' Disable pseudo-tty allocation. -t' Force pseudo-tty allocation.
Mon script utilisé pour returnner ce message, et ne le fait plus.
/usr/bin/ssh -T -q -i $HOME/.ssh/one_command other_system
J'utilise la key authorized_key de l'autre système pour que cela exécute une command:
from="my.mydomain.com",command="bin/remotely-run" ssh-rsa ...
Essayez ceci:
ProxyCommand ssh -A -t gateway ssh -t steve@targetip
Vous pouvez essayer la technique suivante de ssh'ing dans server1 suivie de ssh'ing dans server2.
$ ssh -t user1@server1 ssh -t user2@server2
Le faire comme ça fonctionne pour moi.