私はファイルを.bash_history
台無しにせずに"sshed"サーバーとファイルを自動化したり。known_hosts
/etc/bash_completition
history
known_hosts
その中にある情報は「暗号化された」と同じであるため、ファイルを台無しにすることはできません。これを回避する方法を見つけることはそれほど重要ではありません。
例えば
$ tail -n 2 ~/.ssh/known_hosts
|1|D90I41jNxFy83ZhAoyG7gj0+LpM=|Zkru+0Yi9Q9UNafHpj1IVMGGnAw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArih5PrEeGsMHm+9ytkiiOgNNIh6fQAEFfdDw9IwkOGs13g+YN6k61rRbdXj97N+vvuGslcCL9uDMY+M6bqDX4k2kGJuvmsSBgIWOjOiOtrW6wWaflGO0OKQ39F1R92Bw3gB1kNg8Es3XjNE1D+CRXt/EQLWLBFmF3p41PpoRg/Gyvw4XqQSMOYdGsr0OaE8ozrXWO2rQo2NDe6BDJzSGqZ234jCtnRLEtFBFvisTEbNCYFRkhKMSfrUecyK5bjHRehEHKfsPxNDTCOl7xrx1DDTng/BIgxyCA21s+xa05oNulkMMd/1qNrekoUUFxwJpb1rf6vrW5CkeMIOhCr5Nxw==
|1|Cl6c716uEoPmovaRDDwkM+bYFTc=|VXUrsTRDptMOg/Nm3anFMwjy5O8= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArih5PrEeGsMHm+9ytkiiOgNNIh6fQAEFfdDw9IwkOGs13g+YN6k61rRbdXj97N+vvuGslcCL9uDMY+M6bqDX4k2kGJuvmsSBgIWOjOiOtrW6wWaflGO0OKQ39F1R92Bw3gB1kNg8Es3XjNE1D+CRXt/EQLWLBFmF3p41PpoRg/Gyvw4XqQSMOYdGsr0OaE8ozrXWO2rQo2NDe6BDJzSGqZ234jCtnRLEtFBFvisTEbNCYFRkhKMSfrUecyK5bjHRehEHKfsPxNDTCOl7xrx1DDTng/BIgxyCA21s+xa05oNulkMMd/1qNrekoUUFxwJpb1rf6vrW5CkeMIOhCr5Nxw==
私が見つけたこのソリューションしかし、他の重要ではない理由でファイルはありません~/.ssh/config
。
答え1
より簡単な方法は、known_hosts
ハッシュを無効にし、すべての履歴でオートコンプリートを許可し、ホストを一覧HashKnownHosts no
表示することです(そして、エイリアスをすべてそこに保存するか、エイリアスを作成することができます)。~/.ssh/config
~/.ssh/config
Ports
Users
創造性に感謝しますが、基本的に同じ機能が既にあるので、なぜ車輪を再開発する必要がありますか(デフォルトHashKnownHosts yes
ではUbuntuではこの機能が壊れています)。
答え2
bash_history
だから私はファイルからホストターゲットを自動補完する方法を知りたかったので、この機能が同じ状況で誰にでも役立つことを願っています。
次の行を実行します。
$ complete -W "$(echo $(grep '^ssh ' .bash_history | sort -u | sed 's/^ssh //'))" ssh
complete
- bash 組み込み機能です。したがって、システムにバイナリはありません。押したときにコマンドを完了する方法を処理します。-W
- オートコンプリート単語リストの作成grep '^ssh' .bash_history
.bash_history
- ファイルから ssh で始まるすべての行を返します。sort -u
- 出力ラインをuniqにします。sed 's/^ssh //'
ssh
- 各行の先頭にある文字列を削除します。ssh
-ssh
コマンド実行時
ssh hostname
次のような他の機能を使用するssh user@hostname
だけでなく、オートコンプリートしたい機能のみを維持したり、必要な機能をssh user@hostname -p 2222
使用する必要がある場合regex
grep|sed
hostname
.bashrc
セッションを開始するたびにオートコンプリートされるように、行全体をファイルに挿入します。