
Я собираю машину Vagrant (Ubuntu 12.04) со следующими требованиями:
- Доступ по SSH через Vagrant к пользователю с привилегиями sudo.
Я сгенерировал публичные/приватные ключи (через ssh-keygen
) на хосте и переместил публичный ключ в authorized_keys
файл на гостевой машине. И я попробовал беспарольный SSH.
vagrant ssh
При вводе данных с помощью защищенных паролем SSH-ключей происходит несколько вещей :
- Мне нужно ввести ключевую фразу на хост-машине, чтобы подключиться по SSH к гостевой виртуальной машине.
- Каждый раз, когда я печатаюправильныйключевая фраза не принимается.
В результате я получаю следующее сообщение об ошибке:
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.
Затем я попробовал беспарольный ssh.
vagrant ssh
[email protected]'s password:
??
Я никогда не настраивал пользователя vagrant! Он должен быть user@hostname
таким, каким я его настроил, и могу подтвердить, что он работает, когда я загружаю виртуальную машину в VirtualBox.
Как заставить закрытые ключи ssh работать правильно с vagrant? Что делать на хосте, что делать на госте?
Обновлять
В VirtualBox виртуальная машина работает, но я не могу выполнить ни одну из следующих команд из консоли Vagrant в дополнение к проблемам с vagrant ssh
:
vagrant up
vagrant halt
Единственная работающая команда vagrant — это vagrant suspend
. Когда я использую ее, я могу остановить машину через vagrant halt
. Вот вывод:
$ vagrant halt
[default] Attempting graceful shutdown of VM...
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.
решение1
Я добавляю это решение для всех, кто зайдет в эту ветку:
Сначала откройте этот файл на хост-компьютере:
$ sudo vim ~/.vagrant.d/boxes/<yourbox>/include/_Vagrantfile
Проверьте, что config.ssh.private_key_path
это ваш файл закрытого ключа. Если нет, обновите его
ssh на vagrant box с паролем по умолчанию
$ vagrant ssh (default pwd = ‘vagrant’]
Попав в коробку:
vagrant@lucid64:~$ sudo visudo -f .ssh/authorized_keys
Добавьте свой открытый ключ в этот файл, сохраните файл и выйдите из окна.
vagrant@lucid64:~$ exit
Вернуться к локальной машине
$ vagrant halt
$ vagrant up
Мне это помогло
решение2
У меня была та же проблема, хотя она не была связана с проблемами с ключом SSH. При запуске машины Virtualbox работал и нормально поднял гостевую систему. Я смог сам подключиться к машине по SSH, и vagrant ssh
все получилось, хотя она запросила у меня пароль. Я вошел в систему и обнаружил следующее в /var/log/auth.log на гостевой системе:
Feb 13 10:14:34 spaaza-dev sshd[1468]: Accepted password for vagrant from 192.168.50.1 port 61816 ssh2
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Feb 13 10:14:34 spaaza-dev sshd[1636]: Received disconnect from 192.168.50.1: 11: disconnected by user
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session closed for user vagrant
Feb 13 10:16:44 spaaza-dev sshd[1764]: Authentication refused: bad ownership or modes for directory /home/vagrant
Я зашел посмотреть разрешения для /home/vagrant:
drwxrwxrwx 6 vagrant vagrant 4096 Feb 13 10:15 vagrant
Нехорошо, что-то еще, что я делал, непреднамеренно изменило права доступа к каталогу /home/vagrant. Следующее исправило проблему:
# chmod 755 vagrant
drwxr-xr-x 6 vagrant vagrant 4096 Feb 13 10:15 vagrant
После этого я выключил машину, включил ее снова, и Vagrant отлично справился со своей задачей. :-)
решение3
Попробуйте скопироватьбродячий небезопасный открытый ключв файл .ssh/authorized_keys
в гостевой ящик.
Надеюсь, это решит вашу проблему с SSH.
Если вы хотите сделать его безопасным, вы можете сделать это, скопировав свой собственный .ssh/id_rsa.pub в вышеупомянутый файл. И установив
config.ssh.private_key_path = '~/.ssh/id_rsa'
в вашем Vagrantfile.