Estou me conectando a muitos dispositivos que usam os mesmos endereços IP. Quando os estou conectando ao roteador, recebo a mensagem de aviso REMOTE HOST IDENTIFICATION HAS CHANGED!
e preciso executá -los ssh-keygen -f "/home/xxx/.ssh/known_hosts" -R "xx.xx.xx.xx"
se ainda quiser me conectar ao host remoto.
Minha estratégia atual:
- Eu quero criar um comando encurtado de:
ssh-keygen -f "/home/xxx/.ssh/known_hosts" -R "xx.xx.xx.xx"
- Você pode fazer isso de qualquer usuário.
- Deve ser um único comando. (Para que eu possa copiar e colar uma única linha em outros terminais, caso não a tenha configurado em
.bash_profile
. - O
xx.xx.xx.xx
precisa ser configurável.
Como você não pode fornecer um argumento para o alias (pelo menos eu acho), tentei resolvê-lo com read
:
$ alias ssh-keyrm='read LAST_SSH_IP_ADDRESS_CLEARED && ssh-keygen -f "$HOME/.ssh/known_hosts" -R "$LAST_SSH_IP_ADDRESS_CLEARED"'
$ ssh-keyrm
xx.xx.xx.xx
Algum conselho sobre como posso otimizá-lo ainda mais?
Se você deseja passar argumentos para algo predefinido no Bash, pode usar uma função em vez de um alias para o mesmo efeito:
Que seria executado como tal:
Assim como os aliases, as funções podem ser armazenadas em .bashrc, .bash_profile ou definidas internamente em um shell.
Os aliases bash funcionam como expansões simples (o nome do alias é substituído pelo valor do alias), portanto, eles não podem fazer referência a argumentos individuais usando $n.
No entanto, você pode fornecer argumentos, desde que estejam no final do comando. Com um alias como este:
você pode executá-lo como
rmh 192.168.0.1
e, embora a palavrarmh
seja expandida, todos os argumentos a seguir ainda permanecerão no mesmo lugar.Eu tenho um problema semelhante com dispositivos diferentes usando o mesmo IP, mas adotei uma abordagem um pouco diferente para resolvê-lo: impedir que as chaves do host entrem
known_hosts
em primeiro lugar .Em seguida, execute
sshn
sempre que desejar desativar a segurança da chave do host.O ssh informa que adicionou o host aos hosts conhecidos, mas na verdade não o fez desde que a gravação foi para
/dev/null
. Você pode suprimir isso mexendo no nível de registro, mas isso pode desativar outras mensagens úteis.Eu também tenho
StrictHostKeyChecking=no
que ignorar o prompt de autenticidade, mas se você preferir ver a impressão digital da chave, pode omitir essa opção.Outra solução para evitar que a chave do host seja salva em primeiro lugar
Observe que isso desativará parte do que torna o ssh seguro, a verificação de que o host ao qual você está se conectando é de fato o host que você pensa que é!
Adicionar uma seção a
~/.ssh/config