Se vuoi passare argomenti a qualcosa di predefinito in Bash, puoi usare una funzione invece di un alias con lo stesso effetto:
ssh-keyrm() { ssh-keygen -f "$HOME/.ssh/known_hosts" -R "$1"; }
Che verrebbe eseguito come tale:
$ ssh-keyrm 127.0.0.1
Come gli alias, le funzioni possono essere memorizzate in .bashrc, .bash_profile o definite inlne in una shell.
non puoi fornire un argomento ad alias
Gli alias di Bash funzionano come semplici espansioni (il nome dell'alias viene semplicemente sostituito con il valore dell'alias), quindi non possono fare riferimento a individuo argomenti utilizzando $n.
Tuttavia, puoi fornire argomenti purché vadano alla fine del comando. Con un alias come questo:
alias rmh="ssh-keygen -f ~/.ssh/known_hosts -R"
puoi eseguirlo come rmh 192.168.0.1
e sebbene la parola rmh
verrà espanso, tutti gli argomenti successivi rimarranno comunque nella stessa posizione.
Ho un problema simile con dispositivi diversi che utilizzano lo stesso IP, ma ho adottato un approccio leggermente diverso per risolverlo:impedire alle chiavi dell'host di accedere a known_hosts
in primo luogo .
alias sshn='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Quindi esegui sshn
ogni volta che desideri disabilitare la sicurezza della chiave host.
$ sshn [email protected]
Warning: Permanently added '192.168.1.1' (ECDSA) to the list of known hosts.
[email protected]'s password:
ssh ti dice che ha aggiunto l'host agli host conosciuti, ma in realtà non lo ha fatto poiché la scrittura è andata a /dev/null
. Puoi sopprimerlo giocherellando con il livello di registrazione, ma questo potrebbe disattivare altri messaggi utili.
Ho anche StrictHostKeyChecking=no
in modo che salti la richiesta di autenticità, ma se preferisci vedere l'impronta digitale della chiave, puoi omettere questa opzione.