ZSH에서 ~/.ssh/config에 있는 Host만 자동완성되게 하기

저는 맥에서 zsh을 사용하고 있는데요. 설정은 oh-my-zsh에서 설정된 기본값을 사용합니다.

최근 회사나 커뮤니티의 서버에 접속할 일이 많아지면서 서버 접속에 불편함이 생겼는데요. 그건 바로 ssh 명령어 입력후 탭으로 자동완성되는 호스트에대한것이었습니다. 기본 설정으로 자동완성되는 호스트는 내가 한번이라도 접속한적이 있는것들이 다 나오더라구요. 아마도 ~/.ssh/known_hosts 와 ~/.ssh/config에 설정된 호스트를 모두 뒤져서 자동완성에 사용하는것 같습니다.

한두번만 접속해본 서버들 때문에 자주가는 사이트들이 자동완성되지 않는게 너무 싫어서 ~/.ssh/config에 설정된 호스트 alias만 자동완성에 사용하도록 .zshrc에 아래 코드를 추가합니다.

h=()
if [[ -r ~/.ssh/config ]]; then
   h=($h ${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
fi
if [[ $#h -gt 0 ]]; then
   zstyle ':completion:*:ssh:*' hosts $h
fi

이제는 ssh 입력후 탭을 입력했을때 ~/.ssh/config에 입력된 host alias 목록만 나와서 한결 접속하기 편해졌습니다 ^^

참고정보

게시글의 아마존, iTunes 링크들을 통해 구매를 하시면 제휴(Affiliate) 프로그램에 의해 저에게 일정 금액이 적립될 수 있습니다. ^_____^

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.