생성된 SSH 키를 SSH 에이전트에 추가할 수 없습니다. "인증 에이전트에 대한 연결을 열 수 없습니다."

생성된 SSH 키를 SSH 에이전트에 추가할 수 없습니다. "인증 에이전트에 대한 연결을 열 수 없습니다."

우선, 예, 여기와 stackoverflow에서 비슷한 질문과 답변을 읽었습니다. 딱히 뚜렷한 결과가 나오지 않는 것 같아 다시 질문을 드렸습니다.

저는 최신 Debian Buster를 사용하고 있으며 터미널에서 GitHub에 대한 액세스를 설정하려고 합니다. SSH 연결을 설정하기 위해 공식 GitHub 웹사이트의 단계를 따랐습니다.여기그리고여기.

user@home-machine ~ $ sudo ssh-keygen -t ed25519 -C "my@email"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/ed25519): 
Enter passphrase (empty for no passphrase): [I don't use passphrase]
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/ed25519.
Your public key has been saved in /root/.ssh/ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx my@email
The key's randomart image is:
+--[ED25519 256]--+
xxxxxxxxxxxxxxxxxxx
+----[SHA256]-----+

user@home-machine ~ $ eval "$(ssh-agent -s)"
Agent pid 2864
user@home-machine ~ $ ssh-add ~/.ssh/id_ed25519
/home/user/.ssh/id_ed25519: No such file or directory
user@home-machine ~ $ sudo ssh-add ~/.ssh/id_ed25519
#here is me being stupid and not seeing the correct path, bu I amended the mistake below
user@home-machine ~ $ sudo ssh-add root/.ssh/id_ed25519
[sudo] password for user:
Could not open a connection to your authentication agent.

왜 작동하지 않나요? 내가 뭘 잘못했나요? 죄송합니다. 저는 Linux와 git을 배우고 있는데 뭔가 빠졌을 수도 있습니다. 귀하의 도움에 감사드립니다.

편집하다: 다음 명령을 실행해 보세요.

debtop@DebTop:~$ echo $SSH_AGENT_PID
2864
debtop@DebTop:~$ echo $SSH_AUTH_SOCK
/tmp/ssh-wpXiIKBOY4x7/agent.2863
debtop@DebTop:~$ eval$(ssh-agent -s)
bash: evalSSH_AUTH_SOCK=/tmp/ssh-yUWON3uD5kT5/agent.4242;: File or directory doesn't exist

답변1

user@home-machine ~ $ eval "$(ssh-agent -s)"
Agent pid 2864

ssh-agent여기서는 으로 시작합니다 user. 이는 SSH_AUTH_SOCK다른 SSH 도구에서 프록시의 Unix 소켓을 찾는 데 사용되는 환경 변수를 초기화합니다.

user@home-machine ~ $ sudo ssh-add root/.ssh/id_ed25519
[sudo] password for user:
Could not open a connection to your authentication agent.

ssh-add여기서는 으로 호출합니다 root. sudo를 통해 sudo전달하도록 명시적으로 구성하지 않은 경우SSH_AUTH_SOCK이전되지 않습니다.root환경.

환경 변수가 없으면 소켓 이 무작위로 이름이 지정된 하위 디렉터리(일반적으로 )에 있기 때문에 ssh-add명령이 소켓을 찾을 수 없습니다 . 소켓과 소켓이 있는 디렉터리도 루트에서만 액세스할 수 있지만 일반적으로 루트에서는 문제가 되지 않습니다.ssh-agent/tmp/ssh-<random_alphabet_soup>/agent.<number>user

에이전트가 변환 프로세스 전반에 걸쳐 해당 사용자를 위해 특별히 작업하도록 하려면 sudo다음과 같은 내용을 파일에 추가해야 합니다 /etc/sudoers.

Defaults:user env_keep+=SSH_AUTH_SOCK

user(물론 실제 사용자 이름으로 바꾸십시오.)

루트로 변환을 사용하여 모든 사용자에게 작동하도록 하려면 sudo다음을 수행할 수 있습니다.

Defaults>root env_keep+=SSH_AUTH_SOCK

답변2

모든 키를 삭제하고 전체 과정을 다시 시도해 보았습니다. 아래와 같이 키 없이 생성하면 작동합니다 sudo.

user@home-machine ~ $ ssh-keygen -t ed25519 -C "my@email"

팁을 주신 @Panki에게 감사드립니다. 내가 왜 sudo키를 만들 었는지 기억나지 않습니다 .

관련 정보