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 
  • Как отключить SSLv2 в OpenSSH?
  • Не удается установить ImageMagick на Centos с помощью Yum
  • bash добавляет дополнительные одинарные кавычки
  • ssh для предопределенного сервера работает только после того, как я ssh к нему, набрав ip вручную
  • Сервер не принимает открытый ключ для входа ssh без пароля
  • ssh на сервер, у которого есть сломанная установка bash
  • Не удается получить доступ к ssh в моем VM Centos
  • Замена одного сервера ssh другим при сохранении ключей
  • Сетевое пространство имен, ssh, X11
  • Что случилось с моей интеграцией AD / LDAP?
  • (bash) Script A, ждать сценария B, но не его дочерний процесс
  • Linux и Unix - лучшая ОС в мире.