J'essaie de me connecter à la machine un avec ssh, puis à une autre machine deux avec ssh, mais j'obtiens cette erreur.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
Pourquoi?
command-line
ssh
terminal
Jhonathan
la source
la source
ssh
!Réponses:
Par défaut, lorsque vous exécutez une commande sur la machine distante à l'aide de ssh, un TTY n'est pas alloué pour la session distante. Cela vous permet de transférer des données binaires, etc. sans avoir à faire face aux erreurs de TTY. C'est l'environnement fourni pour la commande exécutée
computerone
.Cependant, lorsque vous exécutez ssh sans commande à distance, il attribue un TTY, car vous exécuterez probablement une session shell. Ceci est prévu par la
ssh [email protected]
commande, mais en raison de l'explication précédente, aucun TTY n'est disponible pour cette commande.Si vous voulez un shell
computertwo
, utilisez ceci à la place, ce qui forcera l'allocation de TTY lors de l'exécution à distance:Cela est généralement approprié lorsque vous exécutez éventuellement un shell ou un autre processus interactif à la fin de la chaîne ssh. Si vous deviez transférer des données, il n'est ni approprié ni nécessaire de les ajouter
-t
, mais chaque commande ssh contiendrait une commande produisant des données ou une commande -consuming, telle que:la source
Il existe un meilleur moyen d'utiliser SSH en tant que relais: utilisez l'
ProxyCommand
option. Vous aurez besoin d'une clé sur la machine cliente qui vous permettra de vous connecter au deuxième ordinateur (la clé publique est de toute façon recommandée pour utiliser SSH dans la plupart des cas). Mettez ceci dans votre~/.ssh/config
et lancezssh computertwo
.nc
est netcat . Toutes les versions disponibles feront l'affaire.la source
Il attend un terminal interactif sur un périphérique tty sur le serveur intermédiaire.
Si vous essayez cette commande, ça devrait marcher:
Voir
man ssh
pour l'-t
option.la source
J'ai résolu ceci en ajoutant RequestTTY Yes à mon fichier de configuration ssh situé dans ~ / .ssh / config comme ceci ...
la source
Vous pouvez utiliser l'option PROXY Jump dans ssh
Donc, si je dois me connecter à hostB mais que je dois d'abord passer par hostA pour y arriver. Normalement je voudrais
Je fais maintenant ça
la source
Vous pouvez remplacer une option de configuration SSH "RequestTTY" à partir de la ligne de commande.
Mon exemple de travail
cd-serv-one.sh
commence/bin/bash
dans une session SSH après l'exécution de plusieurs commandes:Et maintenant, je cours juste
./cd-serv-one.sh
pour démarrer une session SSH nécessaire.la source