![기록 파일 내에서 SSH를 사용할 때 호스트 이름 자동 완성](https://rvso.com/image/89155/%EA%B8%B0%EB%A1%9D%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%97%90%EC%84%9C%20SSH%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EB%95%8C%20%ED%98%B8%EC%8A%A4%ED%8A%B8%20%EC%9D%B4%EB%A6%84%20%EC%9E%90%EB%8F%99%20%EC%99%84%EC%84%B1.png)
나는 언젠가 "sshed"하고 파일을 건드리지 .bash_history
않고 내 파일 에 있는 서버를 자동 완성하는 데 도움이 되는 기능을 찾고 있습니다 .known_hosts
/etc/bash_completition
history
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/config
Ports
Users
창의성에 감사하지만 이미 동일한 기능을 기본으로 제공하는데 휠을 다시 개발해야 하는 이유는 무엇입니까( 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@hostname
ssh user@hostname -p 2222
regex
grep|sed
hostname
.bashrc
세션을 시작할 때마다 자동 완성 기능을 사용할 수 있도록 파일 에 전체 줄을 삽입하십시오 .