SSH-자동 추가

SSH-자동 추가

나는 일부 쉘에서 작업 중이며 다음 줄을 발견했습니다. cat /ssh/sshkey | tr -d '\r' | ssh-add -

이 코드는 키를 가져와 에이전트에 추가합니다. 이것은 현재 환경에서는 잘 작동하지만 다른 가상 머신에서 시도하면 다음과 같은 결과가 나타납니다.Error loading key "(stdin)": invalid format

ssh-add는 비밀번호가 포함된 프롬프트를 기대하는데, 이것이 이 오류의 원인이라고 생각합니다. 그러나 이는 스크립트에 있으므로 비밀번호 없이 작동해야 합니다.

내가 무엇을 놓치고 있나요?

답변1

이는 간단합니다. ssh-add는 입력된 비밀번호의 에코를 비활성화해야 하므로 간단히 리디렉션할 수 없기 때문에 stdin 대신 /dev/tty를 사용합니다.

실제로 매뉴얼 페이지에는 다음과 같이 명시되어 있습니다.

파일에 비밀번호가 필요한 경우 ssh-add는 사용자에게 비밀번호를 제공하도록 요청합니다. 비밀번호는 사용자의 tty에서 읽습니다.

따라서 pty에 연결된 ssh-add를 실행해야 합니다. 그렇지 않으면 SSH_ASKPASS를 사용하여 투박한 해킹을 고안할 수 있습니다(권장하지 않습니다). Expect(1)(사양의 거대함) 또는 pdip만큼 간단한 것; zsh에는 zpty라는 모듈이 있으며 아마도 bash에도 비슷한 것이 있을 수 있습니다.

관련 정보