에코$? ssh-add 실행 후 1을 인쇄합니다.

에코$? ssh-add 실행 후 1을 인쇄합니다.

SSH 프록시 전달을 사용하여 구성하려고 합니다.배포CentOS의 스크립트. 공개 키를 authorized_keys컴퓨터에 있는 사용자 파일에 복사했습니다 . 암호 프롬프트 없이 배포 사용자를 사용하여 서버에 성공적으로 로그인할 수 있었습니다(예를 들어 배포 사용자의 암호는 잠겨 있었습니다).~/.sshdeployserverpasswd -l deploy

내 .ssh 디렉토리에는 Authorized_keys 파일만 포함되어 있습니다.

deploy@server $ ls
authorized_keys

이제 서버에서 내 git 저장소에 액세스할 수 있는 사용자를 배포해야 합니다. 해결책은 SSH 프록시 전달입니다. 서버에서 다음을 수행하여 서버를 통해 저장소에 액세스할 수 있어야 합니다.

# List SSH keys that are loaded into the agent
deploy@server $ ssh-add -l
# Make sure they key is loaded if 'ssh-add -l' didn't show anything
deploy@server $ ssh-add
deploy@server $ ssh -A [email protected] 'git ls-remote [email protected]:capistrano/rails3-bootstrap-devise-cancan.git'

문제는 ssh-add가 키를 로드할 수 없다는 것입니다.

deploy@server $ exec ssh-agent bash
deploy@server $ ssh-add -l
The agent has no identities.
deploy@server $ ssh-add
deploy@server $ echo $?
=> 1

1을 인쇄합니다. 이는 문제가 발생했음을 의미합니다. 설명서에 SSH 에이전트 전달을 사용할 수 있다고 나와 있기 때문에 약간 혼란스럽습니다. 따라서 배포의 .ssh 디렉터리에 id_rsa(개인 키)가 필요하지 않다고 가정합니다. 방금 로컬 시스템의 공개 키를 서버의authorized_keys 파일에 복사한 다음 SSH 에이전트 전달을 사용하여 git 저장소를 인증할 수 있어야 합니다. 그러나 ssh-add에는 개인 키가 있어야 하는 것 같습니다. 문서에는 서버에 개인 키를 생성해야 한다는 내용이 전혀 언급되어 있지 않습니다.

내가 어디서 잘못됐나요?

답변1

뛰어야 한다고 생각하는 건 잘못된 것 같아요ssh-add 서버에서.

authorized-keys클라이언트 컴퓨터(즉, 위 파일의 공개 키에 해당하는 개인 키가 있는 컴퓨터 server)가 SSH 연결을 시작하는 경우 인증 에이전트 전달을 활성화해야 합니다. 매개변수로 지정 하거나 일반적으로 편집 하거나 (연결 중인 사용자의 경우 ) 다음을 지정하여 -A명령줄에서 이 작업을 수행 할 수 있습니다.ssh/etc/ssh/ssh_config~/.ssh/configserver

ForwardAgent yes

보안상의 이유로 일반적으로 로 설정됩니다 no.

ssh-add계속해서 실행할 server필요는 없습니다 . 1로 종료되는 이유는 추가(및 전달)할 개인 키를 찾을 수 없기 때문입니다. ssh-add연결을 만드는 사용자로 클라이언트 컴퓨터에서 실행 중인 경우 다음과 같은 줄이 표시됩니다.

 Identity added: /home/your_user/.ssh/id_rsa

해당 파일은 ~/deploy/.ssh컴퓨터에서 사용할 수 없습니다.server

또한 git 서버에 공개 키가 설치되어 있는지 확인해야 합니다.

관련 정보