Sao chép từ câu trả lời của riêng tôi trên unix.SE :
Nếu bạn đang sử dụng máy chủ Ubuntu, thì bạn nên biết rằng 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, bạn có thể đọc các mục được cấu hình từ ~/.ssh/config
đó, không được băm. Đâ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 đó!