Я хотел бы воспроизвести способ входа Vagrant на мою виртуальную машину в сценарии оболочки с помощью ssh
команды, поэтому я создаю псевдоним для своего экземпляра Vagrant.
Каков синтаксис команды, чтобы использовать обычную ssh
команду для доступа к ней?
shell
command-line
ssh
vagrant
Кевин Берк
источник
источник
vagrant ssh-config
.Ответы:
Мне пришлось заново реализовать "vagrant ssh", потому что эта
-c
опция не передавала аргументы должным образом. Это в основном то, что он делает (может быть больше, но так работает нормально)Как однострочник (благодаря kgadek):
Чтобы учесть, когда у вас более одного бродячего хоста, он выберет нужный хост, а также выберет пустые строки из конфигурации (используя sed):
источник
ssh
в Vagrant из-за пределовVagrantfile
каталога («используя обычнуюssh
команду»), как я и интерпретировал вопрос.auto_correct: true
настройкой. Вот больше информации о том, как изменить это вручнуюHost
запись. Измененная команда:ssh $(vagrant ssh-config | awk 'NR>1 {print " -o "$1"="$2}') localhost
Ответов уже много, но все они кажутся слишком сложными или решают проблемы, которых у автора не было.
просто:
источник
vagrant-ssh
файл в.gitignore
.zsh
) работают следующие однострочные:ssh -F =(vagrant ssh-config) default
ssh
конфигурационном файле:,vagrant ssh-config >> ~/.ssh/config
так что вы просто запускаетеssh default
из любой точки вашей системы, гдеdefault
находится имя виртуальной машины, которое вы можете указать, например, здесь-F
не просто~/.ssh/config
в способ, который @adamczi предлагает, вы можете использовать расширение Visual Studio Code Remote - SSH для ssh в Vagrant VM, редактировать файлы и выполнять удаленную разработку. Просто CMD-SHIFT-P, затем «Remote-SSH: подключиться к хосту ...» и добавленная вами запись ssh .config автоматически появится в списке - вы просто выбираете ее и вуаля, vscode подключается к вашему удаленному vagrant vm! Без подхода ввода конфигурации я не уверен, как иначе я сделал бы это с vscode.В терминальном прогоне
В другом терминале запускается окно / вкладка
Там вы увидите фактическую команду, выполняемую Vagrant, что-то вроде этого:
источник
Просто передайте все
vagrant ssh-config
как файл конфигурацииssh
с-F configfile
параметром. Псевдоним хоста для подключения определяется в первой строкеvagrant ssh-config
;Host default
означает, что вы можете связаться сssh default
.Я не мог видеть опцию для чтения файла конфигурации из стандартного ввода, поэтому пошел с маршрутом временного файла. Вот одна строка, которая также очищает временный
$TMPDIR.vagrant-ssh-config
файл впоследствии. Он должен быть выполнен в том же каталоге, что и вашVagrantfile
, при условии, что ваш бродячий ящик запущен и работает.Примечание: в моей системе Mac OSX
$TMPDIR
расширяется до/var/folders/46/yltlhtgx8m5cg68_w95wgvy41324gn/T/
(прямо сейчас). Используйте другую переменную или другую папку, если она не установлена в вашей системе.источник
ssh -F <(vagrant ssh-config)
zsh: zsh процесс подстановкиssh -F =(vagrant ssh-config)
ssh -F
в bash не работает подстановка процессов - способ, который вы упомянули, должен работать в zsh.Я решил это очень просто: когда вы запускаете окно vagrant, оно показывает адрес ssh, как это
затем вы можете подключиться к коробке, используя пользователя vagrant, хост и порт, который вы получите
источник
vagrant
Если вам не нужно использовать stdin с
ssh
(например, вы хотите выполнить только команду и выйти из системы), вы можете использовать:Этот метод был предложен в ответ на аналогичный вопрос в группах Google .
К сожалению, подстановка процесса bash также не работает (см. Этот вопрос в unix.stackexchange для более подробной информации).
Лучшие варианты у вас есть, если вы хотите интерактивную оболочку, должны создать временный файл и использовать его с
ssh -F
или использоватьawk
как предложено другие ответы.источник
Если вы просто хотите настроить его так, чтобы вы могли нормально использовать обычную командную строку ssh, а также scp и т. Д., Вы можете запустить
vagrant ssh-config
и добавить вывод в вашу конфигурацию ssh по умолчанию. Если вы замените строку «Host default» на более информативное имя хоста, вам следует начать.источник
Если вы просто хотите, чтобы минимальная команда подключалась к вашему устройству, вам нужно знать порт, который он использует (печатается при выполнении
vagrant up
или видимом выполненииvagrant ssh-config
) и где находится ваш закрытый ключ SSH (также отображается при выполненииvagrant ssh-config
)Тогда нужно просто указать ключ и порт:
ssh -p 2222 -i $HOME/vagrantenv/.vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1
источник
Многие другие ответы предполагают, что у вас установлен Vagrant.
У меня установлен Vagrant на Windows 10, но я не могу,
vagrant ssh
потому что я использую PuTTy в качестве SSH-клиента, который vagrant не примет.Тем не менее, в Windows 10 у нас также есть Bash на Ubuntu на Windows. Итак, я просто использую это со следующей командой:
Достаточно просто установить Vagrant на Win10-Ubuntu, но он также хочет, чтобы вы установили Virtualbox по какой-то причине, чего я бы предпочел не делать.
NB Я попробовал с
ssh default -F vagrant-ssh-config
методом, но я просто получаюЯ предполагаю, что это потому, что
IdentityFile
путь - это путь Windows, тогда как в Bash он должен начинаться с/mnt/c/
. Я полагаю, вы могли бы просто записать файл, а затем изменить его, если это будет работать лучше для вас.источник
Вы можете добавить конфигурацию vagrant host в вашу локальную конфигурацию ssh.
vagrant ssh-config >> ~ / .ssh / config
ssh vagrant @ {host}
ех. cat ~ / .ssh / config
источник
Существует способ, который копирует, как удаленный пользователь может войти в систему
config.vm.network "private_network", ip: "192.168.33.10"
Это добавляет частный IP для хоста (сделайте его тем, что вы хотите в диапазоне 192.168, если он еще не используется
your_virtual_host_name.pem
Вы найдете ключ в .vagrant \ machines \ default \ virtualbox \ private_key
Перейдите в свой домашний каталог и выполните обычный Unix ssh, так что
ssh -i your_virtual_hostname.pem username@192.168.33.10
там, где имя пользователя, вполне может быть бродячим, если у вас есть стандартная коробка, посмотрите на вывод vagrant ssh-config для получения стандартных деталей ssh для коробки.
это оно
источник
.vagrant
поэтому все файлы в папке принадлежат пользователю root. И разрешения для файла были rw -------, поэтому только root имел права на чтение файла ключа. Возможно, это может быть полезно для всех.Vagrant хранит закрытый ключ
~/.vagrant.d/insecure_private_key
и использует его для подключения к каждой машине черезssh
, учитывая, что он настроен для подключения через порт 2200 (по умолчанию), это будет что-то вроде:ssh vagrant@localhost -p 2200 -i ~/.vagrant.d/insecure_private_key
Примечание: убедитесь, что закрытый ключ принадлежит запущенному пользователю
Vagrant
.Хотя, если ваша цель - создать среду с несколькими компьютерами, вы можете использовать ее
config.vm.define
.Вот пример, иллюстрирующий среду с двумя компьютерами, один из которых называется,
web
а другойdatabases
:Тогда у вас будут все команды Vagrant, доступные для каждой машины, то есть
vagrant ssh web
иvagrant provision databases
.источник
ssh vagrant@<host>
пароль:vagrant
Примеры:
ssh vagrant@vagrant.local
или после проверки IP (изнутри, используя
vagrant ssh
)ssh vagrant@172.28.128.3
источник
Вы можете добавить конфигурацию ssh для вашего бродячего хоста в конфигурацию ssh.
Получить конфигурацию ssh для vagrant-машины в папке vagrant:
vagrant ssh-config
Откройте
{UserDir}/.ssh/config
и добавьте туда результат предыдущей команды. Примечание : первая строкаHost default
означает псевдоним, который вы будете использовать позже дляssh
команды. Назовите его как ваш бродячий аппарат или реж. Если у вас есть только один бродячий каталог - вы можете назвать егоHost vagrant
Сш к бродяге
ssh vagrant
. Фамилия является псевдонимом из предыдущего шага.источник
Вы можете взять любой из
ssh-config
аргументов и передать их в ssh в командной строке как-o Key=value
. Таким образом, для простой установки vagrant с одним хостом (вам, возможно, придется проделать немного больше работы с установкой с несколькими хостамиgrep
илиperl
для нее), вы можете сделать что-то вроде следующего (или заменитьperl
на,sed
если хотите):источник
Мой Env. это Win7 + Centos. Ответ с большинством согласия не работает для меня. После сбоя после попытки
ssh -p [port] [usrname]@127.0.01
я просто использую XShell, чтобы добавить новый сеанс с бродячим портом и именем пользователя.Оно работает.
Может быть, Xshell - кандидат.
источник