다음 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에 키를 전달하기 전에 키를 명시적으로 해독하여 언제든지 이 문제를 해결할 수 있습니다.