Ошибка SSH при выполнении удаленной команды: "stdin: не является tty"
Я пытаюсь подключиться к машине один с ssh, а затем подключиться к другой машине два с ssh. Но получите эту ошибку:
ssh user@computerone.com 'ssh otheruser@computertwo.com'
stdin: is not a tty
1 ответов
при входе в оболочку удаленный хост предполагает, что соединение выполняется пользователем-человеком. Поэтому разумно ожидать, что они имеют контроль над стандарт на клиенте. То есть пользователь вводит данные на терминал через клавиатуру. Если удаленный хост обнаруживает, что пользователь не является человеком (поскольку вход не является терминальным, а другим процессом), он может предупредить пользователя об этом неожиданном условии.
A демонстрация обсуждаемого проступка и как его избежать (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 не настроены на удаленном конце.