Я пытаюсь подключиться к машине один с ssh, а затем подключиться к другой машине два с ssh, но я получаю эту ошибку.
ssh user@computerone.com 'ssh otheruser@computertwo.com'
stdin: is not a tty
Почему?
command-line
ssh
terminal
Jhonathan
источник
источник
ssh
!Ответы:
По умолчанию, когда вы запускаете команду на удаленном компьютере с помощью ssh, TTY не выделяется для удаленного сеанса. Это позволяет передавать двоичные данные и т. Д. Без необходимости работать с причудами TTY. Это среда, предусмотренная для команды, выполняемой на
computerone
.Однако, когда вы запускаете ssh без удаленной команды, он выделяет TTY, потому что вы, скорее всего, будете запускать сеанс оболочки. Это ожидается
ssh otheruser@computertwo.com
командой, но из-за предыдущего объяснения для этой команды нет доступного TTY.Если вы хотите включить оболочку
computertwo
, используйте это вместо этого, что приведет к выделению TTY во время удаленного выполнения:Это обычно подходит, когда вы в конце концов запускаете оболочку или другой интерактивный процесс в конце цепочки ssh. Если вы собираетесь передавать данные, добавлять их не нужно и не нужно
-t
, но тогда каждая команда ssh будет содержать команду создания данных или -consuming, например:источник
Есть лучший способ использовать SSH в качестве реле: используйте
ProxyCommand
опцию. Вам понадобится ключ на клиентском компьютере, который позволит вам войти на второй компьютер (открытый ключ в любом случае является рекомендуемым способом использования SSH). Положи это в свой~/.ssh/config
и бегиssh computertwo
.nc
это netcat . Подойдет любая из нескольких доступных версий.источник
Он ожидает интерактивный терминал на tty устройстве на промежуточном сервере.
Если вы попробуете эту команду, она должна работать:
Смотрите
man ssh
для-t
варианта.источник
Я решил это, добавив RequestTTY Yes к моему файлу конфигурации ssh, расположенному в ~ / .ssh / config следующим образом ...
источник
Вы можете использовать опцию PROXY Jump в SSH
Поэтому, если мне нужно подключиться к hostB, но сначала мне нужно пройти через hostA. Обычно я бы
Я сейчас делаю это
источник
Вы можете переопределить опцию конфигурации SSH «RequestTTY» из командной строки.
Мой рабочий пример
cd-serv-one.sh
начинается/bin/bash
в сеансе SSH после выполнения нескольких команд:А сейчас я просто запускаю
./cd-serv-one.sh
необходимый сеанс SSH.источник