ssh コマンドで host名を補完する
■前提
- /.ssh/known_hosts がハッシュ化されていない
■内容
~/.bashrc に以下のように記載することで、補完が可能になります。
$ cat ~/.bashrc function _complete_ssh() { if [ -f $HOME/.ssh/known_hosts ]; then local cur=${COMP_WORDS[COMP_CWORD]}; COMPREPLY=( $(compgen -W "`cat $HOME/.ssh/known_hosts | tr ',' ' ' | cut -d' ' -f1`2"-- $cur)) fi } complete -F _complete_ssh ssh
■使用例 ssh w を打ったところで、[tab]キーを押すと、wから始まるホストのみが候補として出て、該当が1件の場合、補完がされる。
■ ~/.ssh/known_hosts の表記例
以下のようにhash化されていない場合のみ使用可能
$ cat ~/.ssh/known_hosts web01,10.0.0.2 ssh-rsa AA...
■雑記
~/.ssh/known_hosts をハッシュ化した場合の運用の実例は、誰か記事にしているでしょうか?
アクセス可能なIPが分かりずらいのは、サーバーに入られたときに、そこを踏み台に 悪さされるのを難しくはできるでしょうが、今思いつく限りでは運用が面倒になりそうな気がして...
■参考になった記事
- known_hosts のハッシュ化について itiskj.hatenablog.com