Sao chép từ câu trả lời của riêng tôi trên unix.SE :
Có vẻ như cụ thể trong Ubuntu các mục trong ~/.ssh/known_hosts
được băm , vì vậy hoàn thành SSH không thể đọc chúng. Đây là một tính năng, không phải là một lỗi. Ngay cả bằng cách thêm HashKnownHosts no
vào ~/.ssh/config
và /etc/ssh/ssh_config
tôi không thể ngăn chặn việc băm máy chủ.
Tuy nhiên, các máy chủ mà tôi quan tâm cũng được tìm thấy trong ~/.ssh/config
. Đây là một kịch bản cho Bash Hoàn thành đọc các mục từ tệp đó:
_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
Đặt tập lệnh đó vào /etc/bash_completion.d/ssh
và sau đó lấy nó bằng lệnh sau:
$ . /etc/bash_completion.d/ssh
Tôi thấy hướng dẫn này là vô giá và tôi sẽ không thể viết kịch bản này nếu không có nó. Cảm ơn Steve Kemp đã viết hướng dẫn tuyệt vời đó!
You may not change the shell for 'counterstrike'.