2010-07-16 7 views
2
system("ssh test.host.com"); 

해당 항목에 permentaly를 추가 하시겠습니까?ssh 키를 처리하는 방법?

나는 자동으로 예를 말해야한다!

+4

먼저 * why * ssh가 그 질문과 항상 응답하는 보안상의 함의를 읽으십시오. 그런 것들이 당신에게 받아 들여지면 결정하십시오. 그런 다음 어떻게하는지 물어보십시오. – ysth

답변

1

응용 프로그램을 시작하기 전에 응용 프로그램을 실행하고 키를 사용하여 (Windows의 메뉴에서 옵션을 사용하거나 Unix의 명령 줄에서 ssh-add을 사용하십시오).

+3

이 답변이 묻는 질문과 관련이 없으며 왜 받아 들여지지 않은 대답인지 이해하지 못합니다. 문제는 호스트의 공개 키를 로컬 known_hosts 파일에 추가하는 것입니다. ssh-add 명령은 서버의 호스트 키 확인을위한 것이 아니라 서버에 대한 클라이언트의 공개 키 인증에 사용됩니다. – Jonas

4

누군가가 첫 번째 키가 유효하다는 데 동의해야합니다. ~/.ssh/known_hosts에 관련 정보를 수동으로 추가하도록 사용자에게 요구할 수 있습니다 (또는 직접하십시오).

1

Nathon이 언급 한 것처럼 올바른 키 목록에 호스트 키를 가져 오는 것이 좋습니다. 간단한 방법은 수동으로 한 번 호스트에 ssh하고 yes라고 대답하면 키가 $HOME/.ssh/known_hosts에 캐시됩니다. 연결하려는 각 호스트와 프로그램을 실행할 각 사용자에 대해이 작업을 수행해야합니다. 시스템에 대한 관리자 권한이있는 경우 실행중인 ssh를 실행하여 호스트 키를 /etc/ssh/ssh_known_hosts에 추가하여 모든 사용자가 사용할 수 있도록 할 수 있습니다.

스크립트가 연결할 호스트를 모른다면 Expect과 같은 모듈을 조사하여 호스트 키 프롬프트를보고 응답해야 할 수 있습니다. 이 단계를 자동화하는 것은 ssh가 제공하는 보안의 일부를 파괴합니다.

8

ssh은 호스트의 공개 키는 아직 확인되지 않은 경우에도 연결할지 묻는 있다는 사실은 /etc/ssh/ssh_config 또는 ~/.ssh/config 당신에 StrictHostKeyChecking ask (또는 yes)를 갖는 결과입니다. known_hosts 파일에 알 수없는 호스트 키를 자동으로 추가하려면이 키를 no으로 설정할 수 있습니다.

어느 경우

system("ssh -o StrictHostKeyChecking=no test.host.com");

ssh가 호스트 키 불일치 암호를 사용할 수 없게됩니다에 대한 경고를 발행합니다 :이 영구적 인 구성을 변경하지 않으려면, 당신은 또한 명령 줄에서 사용할 수 있습니다 가능한 중간자 공격 (man-in-the-middle attack)으로 인해 공개 키 인증으로 계속 로그인 할 수 있습니다.

+0

+1 : 나에게 이것은 올바른 대답이지 받아 들인 대답이 아닙니다! – Lars

+0

+1 : 나는 동의해야합니다. 어떻게 든 나는 이상한 문법에 혼란스러워했다. –

관련 문제