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

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

Estou configurando um servidor para poder suportar SSH com autenticação de chave de host que atualmente é gerenciada por um servidor antigo que está morrendo. A partir de agora posso me conectar com sucesso ao SSH e interagir no terminal normalmente. 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]

Embora 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 quando apontam para o servidor mais antigo, portanto os comandos em si devem funcionar bem. Além disso, se eu conseguir não alterar os comandos, isso nos permitirá ser compatíveis com versões anteriores.

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

HostbasedAuthentication não
RhostsRSAAuthentication não
PermitEmptyPasswords não
ChallengeResponseAuthentication não
UsePAM sim
X11Forwarding sim
PrintMotd não
PrintLastLog sim
TCPKeepAlive sim
AcceptEnv LANG LC_*
Subsistema sftp /usr/lib/openssh/sftp-server
PubkeyAuthentication sim
RSAAuthentication sim LoginGraceTime
2m em sim StrictModes sim

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

Editar: esqueci de mencionar que esse erro também ocorre quando uso o RSync com '-e'. No entanto, descobri que no comando RSync posso corrigir o problema usando [email protected]:/mnt/storage/new_foldero parâmetro de caminho remoto. Se eu remover "username@", recebo o erro novamente. Novamente, a versão com falha funciona bem no servidor antigo, mas falha apenas no novo servidor. Lembre-se também de que este é um código legado, portanto, se eu conseguir fazer com que os comandos antigos funcionem como estão, economizarei muito tempo enviando atualizações.

Responder1

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ê receberá 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 o seu problema não é que “SSH falha com erro de chave do host ao enviar um comando, mas funciona sem um”, seu problema é que o host B não pode fazer ssh para si mesmo - ou, mais especificamente, que “usuário ”no host B não está configurado para poder fazer ssh no host 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)?

informação relacionada