Подтвердить что ты не робот

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

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

ssh [email protected] 'ssh [email protected]'

stdin: is not a tty
4b9b3361

Ответ 1

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


Демонстрация обсуждаемого неправильного поведения и как его избежать (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 не настроены на удаленном конце.