Wenn Sie Argumente an etwas Vordefiniertes in Bash übergeben möchten, können Sie anstelle eines Alias eine Funktion mit demselben Effekt verwenden:
ssh-keyrm() { ssh-keygen -f "$HOME/.ssh/known_hosts" -R "$1"; }
Was als solches ausgeführt werden würde:
$ ssh-keyrm 127.0.0.1
Wie Aliase können Funktionen in .bashrc, .bash_profile gespeichert oder in einer Shell definiert werden.
Sie können alias
kein Argument angebenBash-Aliase funktionieren als einfache Erweiterungen (der Aliasname wird einfach durch den Aliaswert ersetzt), sodass sie nicht auf individuelle verweisen können Argumente mit $n.
Sie können jedoch Argumente angeben, solange sie am Ende stehen des Befehls. Mit einem Alias wie diesem:
alias rmh="ssh-keygen -f ~/.ssh/known_hosts -R"
Sie können es als rmh 192.168.0.1
ausführen und zwar das Wort rmh
erweitert wird, bleiben alle folgenden Argumente an derselben Stelle.
Ich habe ein ähnliches Problem mit verschiedenen Geräten, die dieselbe IP verwenden, habe aber einen etwas anderen Ansatz gewählt, um es zu lösen:verhindern, dass die Hostschlüssel in known_hosts
eingehen an erster Stelle .
alias sshn='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Führen Sie dann sshn
aus wann immer Sie die Hostschlüsselsicherheit deaktivieren möchten.
$ sshn [email protected]
Warning: Permanently added '192.168.1.1' (ECDSA) to the list of known hosts.
[email protected]'s password:
ssh teilt Ihnen mit, dass es den Host zu den bekannten Hosts hinzugefügt hat, aber eigentlich nicht, da der Schreibvorgang auf /dev/null
ging . Sie können dies unterdrücken, indem Sie an der Protokollierungsebene herumspielen, aber das kann andere nützliche Nachrichten deaktivieren.
Ich habe auch StrictHostKeyChecking=no
damit die Authentizitätsabfrage übersprungen wird, aber wenn Sie lieber den Fingerabdruck des Schlüssels sehen möchten, können Sie diese Option weglassen.