기록 파일 내에서 SSH를 사용할 때 호스트 이름 자동 완성

기록 파일 내에서 SSH를 사용할 때 호스트 이름 자동 완성

나는 언젠가 "sshed"하고 파일을 건드리지 .bash_history않고 내 파일 에 있는 서버를 자동 완성하는 데 도움이 되는 기능을 찾고 있습니다 .known_hosts/etc/bash_completitionhistory

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/configPortsUsers

창의성에 감사하지만 이미 동일한 기능을 기본으로 제공하는데 휠을 다시 개발해야 하는 이유는 무엇입니까( 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- 출력 라인을 고유하게 만듭니다.
  • sed 's/^ssh //'ssh- 각 줄에서 시작 문자열을 제거합니다.
  • ssh- ssh명령을 실행할 때

또는 ssh hostname등의 다른 기능을 사용할 뿐만 아니라 자동 완성하려는 항목 만 유지하려면 및 기능을 사용해야 합니다.ssh user@hostnamessh user@hostname -p 2222regexgrep|sedhostname

.bashrc세션을 시작할 때마다 자동 완성 기능을 사용할 수 있도록 파일 에 전체 줄을 삽입하십시오 .

관련 정보