SSH falha com o erro de chave do host ao enviar um comando, mas funciona sem um

0

Estou configurando um servidor para poder oferecer suporte a SSH com autenticação de chave de host, que atualmente é tratada por um servidor antigo. A partir de agora eu posso conectar com sucesso com o SSH e interagir no terminal como normal. No entanto, se eu incluir um comando ou colocar o SSH em um comando RSync, recebo o erro "Falha na verificação da chave do host".

Então este comando funciona:

ssh -o StrictHostKeyChecking=no -i /cygdrive/C/keys/id_rsa [email protected]

Enquanto o seguinte não:

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa [email protected] ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

No entanto, ambos funcionam ao apontar para o servidor mais antigo, portanto, os próprios comandos devem estar bem. Além disso, se eu conseguir não alterar os comandos, isso nos permitiria ser compatível com versões anteriores.

Estou incluindo as configurações do sshd_config no novo servidor (que foram definidas para imitar o antigo servidor) abaixo, caso elas ajudem, os únicos itens aqui são aqueles que não foram comentados.

HostbasedAuthentication no
RhostsRSAAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
PubkeyAuthentication yes
RSAAuthentication yes
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes

O novo servidor é o Ubuntu 17.10 (será atualizado para o LTS quando o próximo for lançado em breve). O servidor antigo é o Debian 6.0.6.

Editar: Esqueci de mencionar, este erro também está ocorrendo quando eu uso o RSync com '-e'. No entanto, descobri que no comando RSync, posso corrigir o problema usando [email protected]:/mnt/storage/new_folder no parâmetro do caminho remoto. Se eu remover "username @", recebo o erro novamente. Mais uma vez, a versão com falha funciona bem no antigo serviço, só falha com o novo servidor. Além disso, lembre-se de que este é um código herdado, portanto, se eu conseguir que os comandos antigos funcionem como estão, isso me poupará um bocado de tempo empurrando as atualizações.

    
por Stephen Teodori 06.03.2018 / 20:10

1 resposta

1

OK, você está no host A (não especificado) e, ao executar o comando 1:

ssh -o StrictHostKeyChecking=no -i /cygdrive/C/keys/id_rsa [email protected]

e você obtém um shell interativo no host B (192.168.0.2). Mas quando você executa o comando 2:

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa [email protected] ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

(do host A), você recebe um erro.

OK, execute o comando 1 do host A e obtenha um shell interativo no host B. Agora, no host B, execute o comando 2b:

ssh 192.168.0.2 mkdir -p /mnt/storage/new_folder

O que acontece? Se isso também falhar, então seu problema não é “O SSH falha com o erro de chave do host ao enviar um comando, mas funciona sem um”, seu problema é que o host B não pode ssh para si mesmo - ou, mais especificamente, que "usuário" no host B não está configurado para ser capaz de ssh para hospedar B.

E, para completar, o que acontece se você executar o comando 2c:

ssh -o StrictHostKeyChecking=no -T -i /cygdrive/C/keys/id_rsa [email protected]  mkdir -p /mnt/storage/new_folder

(do hospedeiro A)?

    
por 06.03.2018 / 21:21