Estou tentando conectar a uma máquina com ssh e depois a outra máquina com ssh, mas recebo esse erro.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
Por quê?
command-line
ssh
terminal
Jhonathan
fonte
fonte
ssh
!Respostas:
Por padrão, quando você executa um comando na máquina remota usando ssh, um TTY não é alocado para a sessão remota. Isso permite transferir dados binários, etc., sem precisar lidar com peculiaridades do TTY. Este é o ambiente fornecido para o comando executado
computerone
.No entanto, quando você executa o ssh sem um comando remoto, ele aloca um TTY, porque é provável que você esteja executando uma sessão de shell. Isso é esperado pelo
ssh [email protected]
comando, mas devido à explicação anterior, não há TTY disponível para esse comando.Se você deseja um shell
computertwo
, use-o, o que forçará a alocação de TTY durante a execução remota:Isso geralmente é apropriado quando você está executando um shell ou outro processo interativo no final da cadeia ssh. Se você estava indo para transferir dados, não é apropriado nem necessário adicionar
-t
, mas todos os comandos ssh conteriam um comando de produção ou consumo de dados, como:fonte
Existe uma maneira melhor de usar o SSH como um relé: use a
ProxyCommand
opção Você precisará ter uma chave na máquina cliente que permita efetuar login no segundo computador (chave pública é a maneira recomendada de usar SSH na maioria das circunstâncias). Coloque isso no seu~/.ssh/config
e executessh computertwo
.nc
é netcat . Qualquer uma das várias versões disponíveis servirá.fonte
Está esperando um terminal interativo em um dispositivo tty no servidor intermediário.
Se você tentar este comando, ele deverá funcionar:
Veja
man ssh
a-t
opção.fonte
Eu resolvi isso adicionando RequestTTY Yes ao meu arquivo de configuração ssh localizado em ~ / .ssh / config como este ...
fonte
Você pode usar a opção PROXY Jump no ssh
Portanto, se eu precisar me conectar ao hostB, mas preciso passar pelo hostA primeiro para chegar lá. Normalmente eu faria
Agora faço isso
fonte
Você pode substituir uma opção de configuração SSH "RequestTTY" na linha de comando.
Meu exemplo de trabalho
cd-serv-one.sh
começa/bin/bash
na sessão SSH após executar vários comandos:E agora eu apenas corro
./cd-serv-one.sh
para iniciar uma sessão SSH necessária.fonte