web-dev-qa-db-ja.com

「vagrant ssh」でsshエージェント転送を使用する方法は?

Vagrant Boxに新しいSSHキーペアを作成するのではなく、ホストマシンにあるキーペアを agent forwarding を使用して再利用したいと思います。 Vagrantfileで config.ssh.forward_agent をTRUEに設定してみた後、VMを再起動して、以下を使用してみました:

vagrant ssh -- -A

...しかし、git checkoutを実行しようとすると、パスワードの入力を求められます。私は何が欠けているのでしょうか?

101
Matt V.

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. Vagrant VMの~/.ssh/authorized_keysに公開キーを追加することを忘れないでください。コピーアンドペーストまたは ssh-copy-id のようなツールを使用して実行できます。
86
LuizSignorelli

Vagrantfileに追加します

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

http://vagrantup.com/v1/docs/config/ssh/forward_agent.html

82
EnabrenTane

"config.ssh.forward_agent = true"をvagrantファイルに追加することに加えて、ホストコンピューターがエージェント転送用に設定されていることを確認してください。 Githubは、このための 良いガイド を提供します。 (トラブルシューティングのセクションをご覧ください)。

20
HipsterHobo

私はこれを1.4.3で上記の応答で動作させましたが、1.5では動作を停止しました。 1.5で完全に動作するには、ssh-addを実行する必要があります。

今のところ、次の行をansibleプロビジョニングスクリプトに追加します。 - name: Make sure ssk keys are passed to guest. local_action: command ssh-add

セットアップの要点も作成しました: https://Gist.github.com/KyleJamesWalker/9538912

6

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-2564078

5
Tim Donohue

Vagrant 1.1.5でvagrant-awsプラグインを最近試したとき、SSHエージェント転送で問題が発生しました。 VagrantはIdentitiesOnly=yesnoに変更するオプションなしで強制していたことが判明しました。これにより、VagrantはAWSプロバイダーのVagrantfileにリストされている秘密キーのみを見るようになりました。

ブログ投稿 で経験を書きました。ある時点でプルリクエストになる場合があります。

1
Benjamin Oakes

本当の問題は、127.0.0.1:2222をデフォルトのポートフォワードとして使用するVagrantです。 1つ追加できます(2222ではなく、2222はデフォルトですでに占有されています)

config.vm.network "forwarded_port"、guest:22、Host:2333、Host_ip: "0.0.0.0"

「0.0.0.0」は、外部接続からのリクエスト取得方法です。 ssh -p 2333 [email protected](独自のホストIPアドレスに変更、dud)は正常に動作します。感謝してください、Leifengと呼んでください!

0
Leifeng

Windowsでは、問題はVagrantがgit-bashのssh-agentと通信する方法を知らないことです。ただし、PuTTYのPageantの使用方法は知っています。したがって、Pageantが実行され、SSHキーをロードしている限り、またconfig.ssh.forward_agentを設定している限り、これは機能するはずです。

詳細については this comment をご覧ください。

Pageantを使用する場合、 WindowsでVagrantfileを更新してSSHキーをコピーする回避策 は不要になりました。

0
Josh Kelley

VMが独自のSSHエージェントを起動しないことを確認してください。 ~/.profileにこの行がありました

eval `ssh-agent`

削除した後、SSHエージェントの転送は機能しました。

0