非常に初心者の質問!
同じAmazon AWSクラスターに属している2つの異なるサーバーに接続しています。彼らは私が運営しているのではありません。
1つのsshセッションで、ターミナルはオートコンプリートを許可します。他のセッションでは、そうではありません。
これはなぜですか-サーバー管理者が設定するオプションですか?
そして、私はそれについて何ができますか?
ありがとう!
非常に初心者の質問!
同じAmazon AWSクラスターに属している2つの異なるサーバーに接続しています。彼らは私が運営しているのではありません。
1つのsshセッションで、ターミナルはオートコンプリートを許可します。他のセッションでは、そうではありません。
これはなぜですか-サーバー管理者が設定するオプションですか?
そして、私はそれについて何ができますか?
ありがとう!
回答:
これは、sshセッションで使用されているシェルとその構成の組み合わせです。
シェルはオートコンプリートをサポートしている場合がありますが、構成されていない場合があります。bashシェルを使用している場合は、ローカルの.bashrcファイルを次のように編集して、オートコンプリートを提供できます。
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
unix.SEに関する自分の回答からコピー:
特にUbuntu ではエントリ~/.ssh/known_hosts
がハッシュ化されているため、SSHの完了でエントリを読み取ることができないようです。これはバグではなく機能です。でも追加することによって、HashKnownHosts no
に~/.ssh/config
し、/etc/ssh/ssh_config
Iホストハッシュを防ぐことができませんでした。
ただし、私が興味を持っているホストはにもあります~/.ssh/config
。次に、そのファイルからエントリを読み取るBash Completionのスクリプトを示します。
_ssh()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(grep '^Host' ~/.ssh/config | awk '{print $2}')
COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
return 0
}
complete -F _ssh ssh
そのスクリプトを配置/etc/bash_completion.d/ssh
し、次のコマンドを使用してソースを指定します。
$ . /etc/bash_completion.d/ssh
私が見つかりました。このガイドは、非常に貴重な、私はこのそれなしでスクリプトにできなかったでしょう。その素晴らしいガイドを書いてくれたSteve Kempに感謝します!
IIRC sshが〜/ .ssh / known_hostsのホスト名をハッシュすることも問題である可能性があります
私が知っているほとんどのインストールでは、完了に利用可能なホストのリストのソースとして〜/ .ssh / known_hostsを使用していますが、一部のシステムは "HashKnownHosts yes"を設定し始め、既知のホストをソースとして使用することを禁止しています...
既知のホスト行が次のようなもので始まる場合
|1|BWO5qDxk/cFH0wa05JLdHn+j6xQ=|rXQvIxh5cDD3C4
その後、ハッシュがアクティブになります。
You may not change the shell for 'counterstrike'.