
Frequentemente faço sshing para máquinas virtuais por meio de um host de salto que possui endereços IP efêmeros e geralmente altera chaves ssh. Não quero ser avisado se a chave ssh for alterada nem solicitado a aceitar a chave ssh.
Eu li sobre as opções StrictHostKeyChecking e UserKnownHostsFile, mas elas não parecem ter nenhum efeito. Ao passar UserKnownHostsFile=/dev/null na linha de comando, a chave do host ssh sempre é adicionada a ~/.ssh/known_hosts (Tenho dezenas de entradas agora) e sempre sou solicitado a aceitar a chave ssh.
Não quero que esse nível de não verificação seja global, por razões de segurança, apenas para esta conexão que tenho script em um arquivo bash.
Aqui está o comando ssh que estou usando:
ssh -o 'ConnectTimeout=10' \
-o 'StrictHostKeyChecking=no' \
-o 'UserKnownHostsFile=/dev/null' \
-o 'CheckHostIP=no' \
-i ~/.ssh/my_ident \
"username@ip" \
-J "username@jump"
Além disso, caso a parte '=' seja o problema, tentei isso, mas ainda obtive o mesmo resultado:
ssh -o 'ConnectTimeout 10' \
-o 'StrictHostKeyChecking no' \
-o 'UserKnownHostsFile /dev/null' \
-o 'CheckHostIP no' \
-i ~/.ssh/my_ident \
"username@ip" \
-J "username@jump"
Estou no macOS 10.14.4 usando OpenSSH_7.9p1, LibreSSL 2.7.3
Alguma ideia de por que os parâmetros -o estão sendo ignorados - ou não estão fazendo o que desejo?
Responder1
Isso pode não estar relacionado ao MacOS. Os parâmetros como e StrictHostKeyChecking
estão relacionados apenas ao host de destino ao qual você está se conectando. No seu caso, é . Eles não têm efeito no host especificado como parte do argumento.UserKnownHostsFile
CheckHostIP
ip
jump
-J
Acredito que não há como especificar essas configurações para o host de salto na linha de comando. Mas você poderia adicionar esses parâmetros ao seu ~/.ssh/config
arquivo, algo assim:
Host jump
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
CheckHostIP no