SSH가 작동하지 않습니다. 예

SSH가 작동하지 않습니다. 예

최근에 사용자의 지문에 다수의 서버 지문을 추가해야 하는 비주류 사례를 해결해야 했습니다 known_hosts(인증은 키 쌍으로 수행됨). 가장 쉬운 해결책은 전화하는 것이라고 생각했습니다.

yes yes | ssh *login@host*

. 놀랍게도 (적어도 나에게는) 이것이 작동하지 않습니다. ssh여전히 지문을 추가할지 묻는 메시지가 표시되며 수동 입력이 필요합니다.

내 질문은 다음과 같습니다. 왜 이런 경우가 발생합니까?이 행동의 기본 메커니즘은 무엇입니까?

답변1

이 프롬프트에서는 ssh다음을 사용하지 않습니다.표준 입력&표준 출력스트림 – 프롬프트가 원격 명령의 입력/출력과 혼동되는 것을 방지합니다. ( 를 실행 ssh host cat something.tar | tar x하고 갑자기 tar x입력에 쓰레기에 대한 불평이 있다고 상상해 보십시오.)

대신 항상 "제어 터미널"을 가리키는 ssh특수 장치를 열고 거기에 프롬프트를 작성하고 그 장치에서 응답을 읽습니다./dev/tty


특히 문제의 경우 OpenSSH에는 ssh-keyscan여러 서버의 공개 키를 한 번에 가져오는 도구인 가 함께 제공됩니다.

ssh-keyscan host1 host2 host3 >> ~/.ssh/known_hosts

known_hosts(여기서 을 의미했는지 , 실제로 필요한지 잘 모르겠습니다 authorized_keys.)


일반적인 경우, 이 expect유틸리티는 일반적으로 tty를 통해 I/O를 수행하는 프로그램을 자동화하는 데 사용될 수 있습니다.

관련 정보