Як використовувати переадресацію агента ssh за допомогою "бродячого ssh"?


107

Замість того, щоб створити нову пару ключів SSH на бродячому вікні, я хотів би повторно використовувати пару ключів, що є у мене на хост-машині, використовуючи переадресацію агента . Я спробував встановити config.ssh.forward_agent на TRUE у програмі Vagrantfile, потім перезавантажив програму VM та спробував використовувати:

vagrant ssh -- -A

... але мені все одно пропонується ввести пароль, коли я намагаюся зробити перевірку на git. Якась ідея, чого мені не вистачає?


якщо у вас немає ключів ssh належним чином, git не повинен запитувати пароль, але скаже, що вам заборонили дозволи. Напевно, вам запитують пароль, оскільки ви клонуєте з https замість git@github.com (ssh). мої 2 копійки.
alexserver

Відповіді:


89

Я використовую бродягу 2 на OS X Mountain Lion.

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. Ви можете перевірити ssh-add -L, якщо він не вказаний, додайте йогоssh-add ~/.ssh/id_rsa
  3. Не забудьте додати ваш відкритий ключ у ~/.ssh/authorized_keysпрограмі Vagrant VM. Ви можете це зробити копіювати та вставляти або використовуючи такий інструмент, як ssh-copy-id

8
Я помітив, що після того, як я налаштувався вище, я можу використовувати "бродячого" користувача для "git clone", але я не можу використовувати "root" користувача до "git clone". Чи знаєте ви, що, здається, проблема? Спасибі
Нам Нгуен

7
config.ssh.private_key_path = "~/.ssh/id_rsa"робить Vagrant зависання на Waiting for VM to boot.
apennebaker

14
Вам також потрібно зберегти блукаючий ключ для вставкиconfig.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/id_rsa' ]
Калін

3
В OS X я знайшов додавання приватних ключів до ланцюжків ключів OS X з ssh-add -Kвідпрацьованим (а також config.ssh.forward_agent = true). Дивіться цю відповідь
Flimm

2
Я отримав таку ж помилку, що і @apennebaker. і слідування крокам, які запропонував Калін, не допомогло ... Що для мене працювало - додавання ключів до брелка з моєї хост-ОС та відключення призначення config.ssh.private_key_path.
alexserver

80

Додайте його до Vagrantfile

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

Дивіться документи


11
Переконайтеся, що ви ssh-add на базовому хості і ключ розшифрований.
EnabrenTane

1
Зауважте, що Windows не автоматично запускає ssh-агент, який потрібно виконати для переадресації ваших ssh-ключів. Дотримуйтесь цього посібника, щоб налаштувати автоматичну запуск ssh-агента в Windows.
nebffa

62
Ця відповідь, ймовірно, не заслуговує стільки голосів. ОП чітко заявляє, що вони додані config.ssh.forward_agentдо свого конфігураційного файлу, тож яку нову інформацію надає ця відповідь? Навіть посилання вже в питанні.
Тріндаз

7
@Trindaz ви абсолютно праві. Я не можу пояснити, чому це одна з моїх найпопулярніших відповідей. Але це, здавалося б, допомогло принаймні 52 людям, тому я мушу назвати це перемогою.
EnabrenTane

1
Ця відповідь справді не приносить жодної нової інформації, але з іншого боку, це все, що потрібно налаштувати для машини, що охоплюється Вагрантом. Принаймні за умови правильного налаштування переадресації агента на підключувальній машині (тобто роботи переадресації для інших, не бродячих машин).
techraf

20

На додаток до додавання "config.ssh.forward_agent = true" до бродячого файлу, переконайтеся, що головний комп'ютер налаштований для переадресації агента. Github дає хороший посібник для цього. (Ознайомтеся з розділом усунення несправностей).


7

Я працював з вищезазначеними відповідями на 1.4.3, але перестав працювати над 1.5. Мені зараз доводиться ssh-addпрацювати з 1,5 повністю.

На даний момент я додаю наступний рядок до мого сценарію забезпечення відповідальності. - name: Make sure ssk keys are passed to guest. local_action: command ssh-add

Я також створив суть моєї настройки: https://gist.github.com/KyleJamesWalker/9538912


Мені завжди доводилося використовувати ssh-add з 1.4 та 1.5, оскільки в іншому випадку не було запущеного агента для переадресації
iheggie

5

Якщо ви працюєте в Windows, SSH Пересилання в Vagrant за замовчуванням не працює належним чином (через помилку в net-ssh). Дивіться конкретний звіт про помилку Vagrant: https://github.com/mitchellh/vagrant/isissue/1735

Однак є рішення! Просто скопіюйте свій локальний ключ SSH у Vagrant VM за допомогою простого сценарію забезпечення у вашому VagrantFile. Ось приклад: https://github.com/mitchellh/vagrant/isissue/1735#issuecomment-25640783


2

Коли ми нещодавно випробували vagrant-awsплагін з Vagrant 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

Справжньою проблемою є Vagrant, що використовує 127.0.0.1:2222 як порт за замовчуванням. Ви можете додати його (не 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 адресу хоста, чувак) буде працювати чудово. Дякую мені, просто називай мене Лейфенг!


0

У Windows проблема полягає в тому, що Vagrant не знає, як спілкуватися з ssh-агентом git-bash. Однак він знає, як використовувати Pageant PuTTY. Отже, доки Pageant працює і завантажує ваш SSH-ключ, і поки ви встановили config.ssh.forward_agent, це має працювати.

Детальніше дивіться у цьому коментарі .

Якщо ви використовуєте Pageant, то вирішення проблеми оновлення Vagrantfile для копіювання ключів SSH у Windows більше не потрібно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.