Snažím se připojit k počítači jedna pomocí ssh a poté se připojit k jinému počítači dva pomocí ssh, ale zobrazuje se mi tato chyba.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
Proč?
Přijatá odpověď:
Ve výchozím nastavení, když spustíte příkaz na vzdáleném počítači pomocí ssh, není pro vzdálenou relaci přidělen TTY. To vám umožní přenášet binární data atd., aniž byste se museli zabývat zvláštnostmi TTY. Toto je prostředí poskytované pro příkaz spouštěný na computerone
.
Když však spustíte ssh bez vzdáleného příkazu, přiděluje TTY, protože pravděpodobně spouštíte relaci shellu. To očekává ssh [email protected]
příkaz, ale kvůli předchozímu vysvětlení není pro tento příkaz k dispozici žádný TTY.
Pokud chcete shell na computertwo
, použijte místo toho toto, což vynutí alokaci TTY během vzdáleného spuštění:
ssh -t [email protected] 'ssh [email protected]'
To je obvykle vhodné, když nakonec spouštíte shell nebo jiný interaktivní proces na konci řetězce ssh. Pokud se chystali přenášet data, není vhodné ani nutné přidat -t
, ale pak by každý příkaz ssh obsahoval příkaz produkující nebo spotřebovávající data, jako:
ssh [email protected] 'ssh [email protected] "cat /boot/vmlinuz"'