Sto provando a connettermi alla macchina uno con ssh e quindi a connettermi a un'altra macchina due con ssh, ma ottengo questo errore.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
Perché?
Risposta accettata:
Per impostazione predefinita, quando si esegue un comando sulla macchina remota utilizzando ssh, un TTY non viene allocato per la sessione remota. Ciò ti consente di trasferire dati binari, ecc. senza dover affrontare stranezze TTY. Questo è l'ambiente fornito per il comando eseguito su computerone
.
Tuttavia, quando esegui ssh senza un comando remoto, alloca un TTY, perché è probabile che tu stia eseguendo una sessione di shell. Questo è previsto da ssh [email protected]
comando, ma a causa della spiegazione precedente, non è disponibile TTY per quel comando.
Se vuoi una shell su computertwo
, usa invece questo, che forzerà l'allocazione TTY durante l'esecuzione remota:
ssh -t [email protected] 'ssh [email protected]'
Questo è in genere appropriato quando alla fine si esegue una shell o un altro processo interattivo alla fine della catena ssh. Se dovevi trasferire i dati, non è né appropriato né necessario aggiungere -t
, ma poi ogni comando ssh conterrebbe un comando per la produzione o il consumo di dati, come:
ssh [email protected] 'ssh [email protected] "cat /boot/vmlinuz"'