Si desea pasar argumentos a algo predefinido en Bash, puede usar una función en lugar de un alias con el mismo efecto:
ssh-keyrm() { ssh-keygen -f "$HOME/.ssh/known_hosts" -R "$1"; }
Que se ejecutaría como tal:
$ ssh-keyrm 127.0.0.1
Al igual que los alias, las funciones pueden almacenarse en .bashrc, .bash_profile o definirse en línea en un shell.
no puede proporcionar un argumento al alias
Los alias de Bash funcionan como expansiones simples (el nombre del alias simplemente se reemplaza con el valor del alias), por lo que no pueden hacer referencia a individual argumentos usando $n.
Sin embargo, puede proporcionar argumentos siempre que vayan al final del comando Con un alias como este:
alias rmh="ssh-keygen -f ~/.ssh/known_hosts -R"
puedes ejecutarlo como rmh 192.168.0.1
y aunque la palabra rmh
se expandirá, todos los argumentos que le sigan permanecerán en el mismo lugar.
Tengo un problema similar con diferentes dispositivos que usan la misma IP, pero tomé un enfoque ligeramente diferente para resolverlo:evitar que las claves del host ingresen a known_hosts
en primer lugar .
alias sshn='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Luego ejecuta sshn
siempre que desee deshabilitar la seguridad de la clave de host.
$ sshn [email protected]
Warning: Permanently added '192.168.1.1' (ECDSA) to the list of known hosts.
[email protected]'s password:
ssh le dice que agregó el host a los hosts conocidos, pero en realidad no lo hizo ya que la escritura fue a /dev/null
. Puede suprimir esto jugando con el nivel de registro, pero eso puede desactivar otros mensajes útiles.
También tengo StrictHostKeyChecking=no
para que omita la solicitud de autenticidad, pero si prefiere ver la huella digital de la llave, puede omitir esa opción.