SSH를 통한 로그인시 ssh-agent 및 ssh-add를 실행하는 간단한 방법은 무엇입니까?


37

ssh를 통해 서버에 로그인 할 때 다음 명령을 자동으로 실행하려고합니다.

ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa

내 ssh 키에는 암호가 있으며 로그인 당 한 번 입력하면 좋습니다.

나는 이것을 .bashrc 파일에 넣으려고했지만 ssh-agent가 새로운 bash 세션을 시작한다고 생각합니다. 내 .bashrc에 로그인 한 후 로그인하려고하면 멈추고 'exit'를 입력하여 'passphrace를 입력하여 키 잠금 해제'프롬프트를 확인하십시오.

다른 제안?

서버에서 우분투 LTS를 실행 중


서버에서 키 에이전트가 필요한 이유 연결하려는 로컬 클라이언트 에 있어야합니다 .
Zoredache

@Zoredache git pull원격 서버에서 할 수 있기를 원합니다
Upvote

그런 다음 로컬 머신에서 SSH 에이전트를 실행하고 에이전트를 전달하십시오.
Zoredache

@ Zoredache 감사합니다, 그것이 가능하다는 것을 몰랐습니다. 그러나 여전히 내 로컬 컴퓨터에서도 bash 스크립트 내에서 ssh-add / ssh-agent를 수행하고 싶습니다. 이러한 명령을 수동으로 실행해야하는 번거 로움이 있습니다.
Upvote

답변:


51

이것을 추가해보십시오 :

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

이런 식 ssh-agent으로 새 셸을 시작하지 않고 백그라운드에서 자동으로 시작되고 셸 명령을 추출하여 적절한 환경 변수를 설정합니다.

주석에서 언급했듯이 원격 호스트에서 에이전트를 실행 하지 않고 작업중 인 상자에서 에이전트를 실행하고 사용하고 싶을 수도 있습니다.

ssh -A remote-host

로컬 ssh 에이전트의 서비스를 원격 호스트로 전달합니다.

보안상의 이유로 신뢰할 수있는 사람이 실행하는 호스트에는 에이전트 전달 만 사용해야하지만, 언제라도 완전한 에이전트를 원격으로 실행하는 것보다 낫습니다.


내가 교체 할 때 ssh-agent /bin/bash함께 ssh-agent -s하고 내가하려고 git pull, 난 여전히 잠금을 해제 할 수있는 개인 키의 암호를 요구하고있다. 그것은 실제로 내가 원하는 것이 아니며, ssh-add를 할 때 암호를 입력하고 git 명령을 실행할 때마다 반복하지 않아도됩니다. 어떤 아이디어?
Upvote

에이전트를 로컬로 실행하고 ssh -A를 사용하는 것은 선택 사항이 아닙니다. 문제는 모든 연결에서 ssh-agent를 '재시작'할 수 없다는 것입니다. 시작할 때마다 '아무것도'알지 못하며 키를 ssh-add 할 때 암호를 해독해야합니다.
Tobi Oetiker

.ssh / config 파일의 경우 : 호스트 원격 호스트 ControlMaster 자동 ControlPath ~/.ssh/master-%l-%r@%h : % p ControlPersist 2 시간
Tobi Oetiker

1
죄송합니다 바로 위의 내 대답을 업데이트 ... 당신은 ssh를 에이전트 호출 앞에 추가 평가가 필요 bash는 실현
토비 Oetiker

1
별명을 만들 수 있습니다
Tobi Oetiker

2

한 가지 대안은 Funtoo 's Keychain 을 사용하는 것 입니다. 그런 다음이 하나의 라이너를 bash 쉘에 붙일 수 있습니다.

eval $(keychain --eval id_rsa)

각 서브 쉘에 대해 ssh-agent 프로세스를 실행하지 않으면 서 동일한 작업 (ssh 에이전트 등을 시작 함)을 수행합니다. 대신 소유 한 "이미 실행중인"인스턴스를 찾아 연결합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.