Як використовувати переадресацію агента 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.