Você pode conseguir isso criando um script que primeiro exclua a entrada relevante de known_hosts
e execute ssh usando expect
conforme descrito em Shell Script para logar em um servidor ssh
Esta pergunta, em diferentes formas, foi feita centenas de vezes, e as respostas são sempre similares - eu concordo com elas no caso geral, mas ainda gostaria de perguntar de novo como o meu caso é um pouco diferente.
Meu fluxo de trabalho envolve interação via SSH com vários dispositivos fabricados pela empresa em que trabalho e gostaria que meu cliente SSH:
Os dispositivos estão sempre em uma rede local isolada, sem acesso à internet. Não consigo usar a autenticação baseada em chave, pois esses dispositivos não têm armazenamento persistente (as chaves não sobreviverão a uma reinicialização). Eu também gostaria de usar o mesmo PC para acessar o hardware em diferentes configurações - IPs e senhas são os mesmos, mas os IDs dos hosts são diferentes.
Regularmente, o cliente OpenSSH é penoso neste cenário - embora eu entenda que isso se deve à segurança que eu gostaria de voluntariamente optar por desativá-lo.
Isso é de alguma forma possível sem bifurcar o OpenSSH e fazer essas alterações sozinho?
Você pode conseguir isso criando um script que primeiro exclua a entrada relevante de known_hosts
e execute ssh usando expect
conforme descrito em Shell Script para logar em um servidor ssh
1) senhas: você pode alterar uma imagem de inicialização desses dispositivos e escrever uma chave nela permanentemente, para que você não precise digitar a senha nunca. veja se é possível ... não tenho certeza sobre quais dispositivos você usa.
2) coloque o seguinte código em ~ / .ssh / config
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
isso irá configurar você.