Pokud chcete předat argumenty něčemu předdefinovanému v Bash, můžete použít funkci místo aliasu se stejným efektem:
ssh-keyrm() { ssh-keygen -f "$HOME/.ssh/known_hosts" -R "$1"; }
Který by byl spuštěn jako takový:
$ ssh-keyrm 127.0.0.1
Stejně jako aliasy mohou být funkce uloženy v .bashrc, .bash_profile nebo definované inlne v shellu.
nemůžete poskytnout argument alias
Aliasy Bash fungují jako jednoduchá rozšíření (název aliasu se pouze nahradí hodnotou aliasu), takže nemohou odkazovat na jednotlivce argumenty pomocí $n.
Argumenty však můžete poskytnout, pokud budou na konci příkazu. S aliasem, jako je tento:
alias rmh="ssh-keygen -f ~/.ssh/known_hosts -R"
můžete jej spustit jako rmh 192.168.0.1
a ačkoli slovo rmh
se rozbalí, všechny následující argumenty zůstanou na stejném místě.
Mám podobný problém s různými zařízeními používajícími stejnou IP adresu, ale k vyřešení jsem zvolil trochu jiný přístup:zabránit hostitelským klíčům v přístupu do known_hosts
na prvním místě .
alias sshn='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Poté spusťte sshn
kdykoli chcete deaktivovat zabezpečení klíče hostitele.
$ sshn [email protected]
Warning: Permanently added '192.168.1.1' (ECDSA) to the list of known hosts.
[email protected]'s password:
ssh vám řekne, že přidal hostitele ke známým hostitelům, ale ve skutečnosti se tak nestalo, protože zápis šel do /dev/null
. Můžete to potlačit pohráváním si s úrovní protokolování, ale to může vypnout další užitečné zprávy.
Mám také StrictHostKeyChecking=no
takže přeskočí výzvu k ověření pravosti, ale pokud byste raději viděli otisk klíče, můžete tuto možnost vynechat.