FIFO에서 RSA 키를 로드할 때 ssh-add가 비밀번호를 묻도록 강제하는 방법은 무엇입니까?

FIFO에서 RSA 키를 로드할 때 ssh-add가 비밀번호를 묻도록 강제하는 방법은 무엇입니까?

다음 RSA 키(비밀번호 포함)를 만들었습니다.

ssh-keygen -t rsa -f rsa_foo

이제 일반적인 방법으로 키를 추가하면 ssh-add비밀번호를 묻는 메시지가 표시됩니다.

$ ssh-add rsa_foo
Enter passphrase for rsa_foo: 12345

그러나 FIFO를 통해 키를 로드하면 더 이상 다음을 묻지 않습니다.

$ mkfifo -m=600 fifo
$ cat rsa_foo >fifo | ssh-add fifo

그것은 나에게 다음과 같은 오류를 제공합니다 :

  • 운영 체제:

    ssh_askpass: exec(/usr/libexec/ssh-askpass): 해당 파일이나 디렉터리가 없습니다.

  • 리눅스(우분투):

    ssh_askpass: exec(/usr/bin/ssh-askpass): 해당 파일이나 디렉터리가 없습니다.

이 방법은 RSA 키 파일에 암호가 없을 때 작동합니다.

ssh-add정상적으로 비밀번호를 요청할 수 있도록(또는 어떻게든 비밀번호를 전달할 수 있도록) 위의 오류를 수정하려면 어떻게 해야 합니까 ?

내 목표는 FIFO를 사용하여 이 RSA 키를 로드하는 것입니다.

답변1

비밀번호를 묻는 메시지가 표시됩니다.

$ ls -l fifo
prw------- 1 glopes users 0 Out 11 03:59 fifo
$ ssh-add fifo
Enter passphrase for fifo:

그런 다음 다른 터미널에서 키를 로드합니다.

$ cat id_rsa > fifo

또는 다음 한 줄을 사용해 보십시오.

$ (cat id_rsa > fifo &); ssh-add fifo

$SSH_ASKPASS매뉴얼에 나와 있듯이 터미널에서 을 호출할 필요가 없습니다 .

ssh-add에 비밀번호가 필요한 경우 터미널에서 실행하면 현재 터미널에서 비밀번호를 읽습니다. ssh-add에 연결된 터미널이 없지만 설정된 경우 DISPLAY지정된 SSH_ASKPASS프로그램(기본값은 "ssh-askpass)"을 실행 SSH_ASKPASS하고 X11 창을 열어 비밀번호를 읽습니다.

ssh-add에 키를 전달하기 전에 키를 명시적으로 해독하여 언제든지 이 문제를 해결할 수 있습니다.

관련 정보