SSH внутри SSH терпит неудачу с «stdin: is not tty»

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

ssh user@computerone.com 'ssh otheruser@computertwo.com' stdin: is not a tty 

Зачем?

4 Solutions collect form web for “SSH внутри SSH терпит неудачу с «stdin: is not tty»”

По умолчанию при запуске команды на удаленном компьютере с использованием ssh TTY не выделяется для удаленного сеанса. Это позволяет передавать двоичные данные и т. Д. Без необходимости иметь дело с трюками TTY. Это среда, предоставленная для команды, выполняемой на computerone .

Однако при запуске ssh без удаленной команды он выделяет TTY, потому что вы, скорее всего, будете запускать сеанс оболочки. Это ожидается командой ssh otheruser@computertwo.com , но из-за предыдущего объяснения для этой команды нет TTY.

Если вы хотите оболочку на computertwo , используйте это вместо этого, что приведет к принудительному распределению TTY во время удаленного выполнения:

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

Это обычно подходит, когда вы в конце концов запускаете оболочку или другой интерактивный процесс в конце ssh-цепи. Если вы собираетесь передавать данные, для добавления -t не требуется и не требуется, но тогда каждая команда ssh будет содержать команду для создания данных или -обязание, например:

 ssh user@computerone.com 'ssh otheruser@computertwo.com "cat /boot/vmlinuz"' 

Существует лучший способ использовать SSH в качестве реле: используйте опцию ProxyCommand . Вам нужно будет иметь ключ на клиентской машине, который позволяет вам войти во второй компьютер (в любом случае, открытый ключ является рекомендуемым способом использования SSH в большинстве случаев). Поместите это в свой файл ~/.ssh/config и запустите ssh computertwo .

 Host computerone HostName computerone.com UserName user Host computertwo HostName computertwo.com UserName otheruser ProxyCommand ssh computerone exec nc %h %p 

nc – netcat . Будет доступна любая из нескольких доступных версий.

Он ожидает интерактивный терминал на устройстве tty на промежуточном сервере.

Если вы попробуете эту команду, она должна работать:

 ssh user@computer1 -t "ssh otheruser@computer2" 

См. man ssh для опции -t .

Я решил это, добавив RequestTTY Да в мой конфигурационный файл ssh, расположенный в ~ / .ssh / config, как это …

 Host myserver.com User my-ssh-username RequestTTY Yes 
  • «Канал 3: сбой при открытии: административно запрещено: открыть сбой» при создании сеанса VNC в туннеле SSH
  • ssh ubuntu для android: нет маршрута к хосту
  • Наличие файла id_rsa.pub в моем защищенном репозитории dotfiles
  • Запуск mpirun и ssh-add удаленно на той же сессии
  • Есть ли способ отправить команду из удаленного сеанса ssh на ваш локальный компьютер?
  • SSH в SSH в сценарии оболочки
  • Может ли пользователь linux изменить свой пароль, не зная текущего пароля?
  • Почему я все еще получаю приглашение пароля с помощью ssh с аутентификацией с открытым ключом?
  • команда ssh и неинтерактивная оболочка без входа
  • Получение пользовательского ввода из сценария, используемого как stdin для сеанса SSH
  • SSH ключ только для удаленного входа в систему, отключает пароль хорошей практики?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.