Ошибка SSH при выполнении удаленной команды: "stdin: не является tty"

Я пытаюсь подключиться к машине один с помощью SSH, а затем подключиться к другой машине два с помощью SSH. Но получите эту ошибку:

ssh user@computerone.com 'ssh otheruser@computertwo.com'

stdin: is not a tty

1 ответ

Решение

При входе в оболочку удаленный хост предполагает, что соединение установлено пользователем. Поэтому разумно ожидать, что они контролируют стандарт на клиенте. То есть пользователь вводит данные на терминале через клавиатуру. Если удаленный хост обнаруживает, что пользователь не является человеком (поскольку ввод не является терминалом, а другим процессом), он может предупредить пользователя об этом непредвиденном состоянии.


Демонстрация обсуждаемого плохого поведения и как его избежать (man ssh и ищите - t для более подробного объяснения).

$ ssh -t genja.org 'ssh raptor.lan hostname\; uptime'
host: genja.lan 
raptor
 21:17:27 up 3 days, 15 min,  1 user,  load average: 0.00, 0.00, 0.00
Connection to genja.org closed.

$ ssh genja.org uptime 
host: genja.lan 
 21:17:43 up 12 days, 17:40,  1 user,  load average: 0.30, 0.08, 0.02

... и ошибка:

$ ssh  genja.org 'ssh raptor.lan hostname\; uptime'
host: genja.lan 
Permission denied (publickey,keyboard-interactive).

Вы можете сделать туннель вместо этого:

ssh -L 4444:raptor.lan:22 genja.org

Затем на другом терминале:

ssh -p 4444 localhost will give you a conenction straight to "raptor.lan"

Используйте IP-адреса, такие как 192.168.0.11, если псевдонимы DNS не настроены на удаленном конце.

Другие вопросы по тегам