"vagrant ssh"와 함께 ssh 에이전트 전달을 사용하는 방법은 무엇입니까?


107

방랑자 상자에 새 SSH 키 쌍을 만드는 대신 에이전트 전달을 사용하여 호스트 컴퓨터에있는 키 쌍을 다시 사용하고 싶습니다 . Vagrantfile에서 config.ssh.forward_agent 를 TRUE로 설정 한 다음 VM을 재부팅하고 다음을 사용해 보았습니다.

vagrant ssh -- -A

...하지만 git checkout을 시도 할 때 여전히 비밀번호를 입력하라는 메시지가 표시됩니다. 내가 뭘 놓치고 있는지 아십니까?


ssh 키가 적절하지 않으면 git은 암호를 묻지 말고 권한을 거부했다고 알려야합니다. git@github.com (ssh) 대신 https에서 복제하기 때문에 암호를 묻는 메시지가 표시됩니다. 내 2 센트.
alexserver 2015 년

답변:


89

OS X Mountain Lion에서 vagrant 2를 사용하고 있습니다.

Vagrant.configure("2") do |config|
  config.ssh.private_key_path = "~/.ssh/id_rsa"
  config.ssh.forward_agent = true
end
  1. config.ssh.private_key_path 로컬 개인 키입니다.
  2. 로컬 ssh-agent에서 개인 키를 사용할 수 있어야합니다. ssh-add -L목록에없는 경우으로 확인할 수 있습니다.ssh-add ~/.ssh/id_rsa
  3. ~/.ssh/authorized_keysVagrant VM에 공개 키를 추가하는 것을 잊지 마십시오 . 복사하여 붙여 넣기를하거나 ssh-copy-id 와 같은 도구를 사용하여 할 수 있습니다.

8
위에서 설정 한 후 "vagrant"사용자를 "git clone"으로 사용할 수 있지만 "root"사용자를 "git clone"으로 사용할 수 없다는 것을 알았습니다. 무엇이 문제인지 알고 있습니까? 감사합니다
Nam Nguyen

7
config.ssh.private_key_path = "~/.ssh/id_rsa"Vagrant는 Waiting for VM to boot.
apennebaker 2014 년

14
당신은 또한 vagrant insercure 키를 유지해야합니다config.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/id_rsa' ]
Calin

3
OS X에서 나는 ssh-add -K일한 (뿐만 아니라 config.ssh.forward_agent = true) OS X 키 체인에 개인 키를 추가하는 것을 발견 했습니다 . 이 답변보기
Flimm 2015

2
@apennebaker와 같은 오류가 발생했습니다. Calin이 제안한 단계를 따르면 도움이되지 않았습니다. 저에게 도움이 된 것은 호스트 OS에서 키 체인에 키를 추가하고 config.ssh.private_key_path 할당을 비활성화하는 것입니다.
alexserver

80

Vagrantfile에 추가

Vagrant::Config.run do |config|
   # stuff
   config.ssh.forward_agent = true
end

문서보기


11
기본 호스트에 ssh-add하고 키가 해독되었는지 확인하십시오.
EnabrenTane 2012-08-23

1
Windows는 ssh 키를 전달하기 위해 실행해야하는 ssh-agent를 자동 시작하지 않습니다. 이 가이드 를 따라 Windows에서 ssh-agent 자동 시작을 설정하십시오.
nebffa

62
이 답변은 아마도 그렇게 많은 표를받을 가치가 없을 것입니다. OP config.ssh.forward_agent는 구성 파일에 추가했음을 명확하게 나타내 므로이 답변은 어떤 새로운 정보를 제공합니까? 링크조차 이미 질문에 있습니다.
Trindaz 2014

7
@Trindaz 당신이 완벽합니다. 이것이 내 가장 인기있는 답변 중 하나 인 이유를 설명 할 수 없습니다. 그러나 이것은 겉보기에 적어도 52 명에게 도움이 되었기 때문에 나는 그것을 승리라고 불러야한다.
EnabrenTane 2011

1
이 대답은 실제로 새로운 정보를 가져 오지는 않지만 다른 한편으로는 Vagrant가 프로비저닝 한 시스템에 대해 구성해야하는 모든 것입니다. 적어도 연결 컴퓨터에 에이전트 전달이 올바르게 설정되어 있다면 (즉, 다른 비방 랑 컴퓨터에 대한 전달이 작동합니다).
techraf

20

vagrant 파일에 "config.ssh.forward_agent = true"를 추가하는 것 외에도 호스트 컴퓨터가 에이전트 전달을 위해 설정되어 있는지 확인하십시오. Github는 이에 대한 좋은 가이드 를 제공합니다 . (문제 해결 섹션을 확인하십시오).


7

나는 1.4.3에서 위의 답변으로 작업했지만 1.5에서 작업을 중단했습니다. 이제 ssh-add1.5로 완전히 작동 하려면 실행 해야합니다.

지금은 ansible 프로비저닝 스크립트에 다음 줄을 추가합니다. - name: Make sure ssk keys are passed to guest. local_action: command ssh-add

또한 내 설정의 요점을 만들었습니다 : https://gist.github.com/KyleJamesWalker/9538912


그렇지 않으면 에이전트가 전달되도록 실행되지 있었다 나는 항상 1.4과 1.5을 사용하여 SSH 추가로 했어
iheggie

5

Windows를 사용하는 경우 Vagrant의 SSH 전달이 기본적으로 제대로 작동하지 않습니다 (net-ssh의 버그로 인해). 이 특정 Vagrant 버그 보고서를 참조하십시오 : https://github.com/mitchellh/vagrant/issues/1735

그러나 해결 방법이 있습니다! VagrantFile의 간단한 프로비저닝 스크립트를 통해 로컬 SSH 키를 Vagrant VM에 자동 복사하기 만하면됩니다. 예 : https://github.com/mitchellh/vagrant/issues/1735#issuecomment-25640783


2

최근 vagrant-awsVagrant 1.1.5 에서 플러그인을 사용해 보았을 때 SSH 에이전트 전달에 문제가 발생했습니다. 그것은 방랑은 강제 것을 밝혀 IdentitiesOnly=yes로 변경하는 옵션없이 no. 이로 인해 Vagrant Vagrantfile는 AWS 공급자에 대해 나열된 개인 키만 볼 수있었습니다 .

나는 블로그 포스트 에 우리의 경험을 썼다 . 언젠가는 풀 리퀘스트로 바뀔 수 있습니다.


2
생성시 호스트 컴퓨터의 기본 공개 키를 Vagrant VM으로 복사하는 것을 자동화하는 방법이 Vagrant up있습니까? 지금은 수동으로 컴퓨터를 만들 로그인 후 /home/vagrant/.ssh/authorized_keys 내 공개 키를 추가해야
노아

1

VM이 자체 SSH 에이전트를 시작하지 않는지 확인하십시오. 이 라인이 내~/.profile

eval `ssh-agent`

제거 후 SSH 에이전트 전달이 작동했습니다.


0

실제 문제는 기본 포트 포워드로 127.0.0.1:2222를 사용하는 Vagrant입니다. 하나를 추가 할 수 있습니다 (2222가 아님, 2222는 기본적으로 이미 사용 중임).

config.vm.network "forwarded_port", 게스트 : 22, 호스트 : 2333, host_ip : "0.0.0.0"

"0.0.0.0"은 외부 연결에서 요청하는 방법입니다. 그러면 ssh -p 2333 vagrant@192.168.2.101 (자신의 호스트 IP 주소로 변경, dud)가 제대로 작동합니다. 고마워요 그냥 저를 Leifeng이라고 불러주세요!


0

Windows에서 문제는 Vagrant가 git-bash의 ssh-agent와 통신하는 방법을 모른다는 것입니다. 그러나 PuTTY의 Pageant를 사용하는 방법을 알고 있습니다. 따라서 Pageant가 실행 중이고 SSH 키를로드하고 config.ssh.forward_agent를 설정 한 경우 작동합니다.

자세한 내용은 이 주석 을 참조하십시오.

Pageant를 사용하는 경우 Windows에서 SSH 키를 복사하도록 Vagrantfile을 업데이트하는 해결 방법 이 더 이상 필요하지 않습니다.

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