Как подключиться по SSH к бродячим, фактически не работает "залет СШ"?



Я хотел бы воспроизвести способ, как Vagrant входит в мою виртуальную машину в сценарии оболочки с помощью ssh команда, поэтому я создаю псевдоним для моего экземпляра Vagrant.



каков синтаксис команды для использования обычного для доступа к нему?

765   15  

15 ответов:

мне пришлось повторно реализовать "vagrant ssh", потому что это -c опция не передавала аргументы должным образом. Это в принципе что он делает (может быть больше, но он отлично работает таким образом)

#!/bin/sh
PORT=$(vagrant ssh-config | grep Port | grep -o '[0-9]\+')
ssh -q \
    -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    -i ~/.vagrant.d/insecure_private_key \
    vagrant@localhost \
    -p $PORT \
    "$@"

как ОДН-вкладыш (с спасибо кгадек):

ssh $(vagrant ssh-config | awk 'NR>1 {print " -o ""="}') localhost

чтобы учесть, когда у вас есть более одного бродячего хоста, это позволит выбрать нужный хост, а также отбирать пустые строки из конфигурации (используя sed):

HOST=name-of-my-host
ssh $(vagrant ssh-config $HOST | sed '/^[[:space:]]*$/d' |  awk 'NR>1 {print " -o ""="}') localhost

есть много ответов, но все они кажутся слишком сложными или решить проблемы Аскер не было.

просто:

# save the config to a file
vagrant ssh-config > vagrant-ssh

# run ssh with the file.
ssh -F vagrant-ssh default

в терминале run

vagrant ssh

в другом окне терминала/вкладка run

ps aux | grep ssh

там вы увидите фактическую команду, выполненную Vagrant, что-то вроде этого:

ssh [email protected] -p 2222 -o Compression=yes -o DSAAuthentication=yes -o LogLevel=FATAL -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -i ~/.vagrant.d/less_insecure_private_key -o ForwardAgent=yes

просто пройти весь vagrant ssh-config в файле config для ssh С -F configfile

Если вам не нужно использовать stdin С ssh (например, вы хотите выполнить только команду и выйти из системы) вы можете использовать:

vagrant ssh-config --host default | ssh -F /dev/stdin default

этот метод был предложен в ответ на подобный вопрос на группы google.

к сожалению замена процесса bash не работает (см. Этот вопрос на unix.stackexchange для более подробной информации).

лучших вариантов у вас есть, если вы хотите интерактивная оболочка, чтобы создать временный файл и использовать его с ssh -F или использовать awk как было предложено другими ответами.

Если вы просто хотите настроить его так, чтобы вы могли использовать обычную командную строку ssh, а также scp и т. д., Вы можете запустить vagrant ssh-config и добавить в конфигурацию SSH по умолчанию. Если вы замените строку "Host default" более описательным именем хоста, вы должны быть хороши.

vagrant ssh-config |sed -e "s/Host default/Host my_cool_dev_box/" >> ~/.ssh/config
ssh my_cool_dev_box

Я решил это очень простым способом: когда вы запускаете окно vagrant, он показывает адрес ssh следующим образом

SSH address: 127.0.0.1:2222

затем вы можете подключиться к коробке с помощью бродячего пользователя, хоста и порта, который вы получаете

ssh [email protected] -p 2222

многие другие ответы предполагают, что у Вас установлен Бродяга.

у меня Vagrant установлен на Windows 10, но я не могу vagrant ssh потому что я использую PuTTy в качестве своего SSH-клиента, который vagrant не примет.

The ssh исполняемый файл, найденный в пути, является клиентом SSH PuTTY Link. Vagrant совместим только с клиентами OpenSSH SSH.

однако, в Windows 10 у нас также есть Bash на Ubuntu на Windows. Итак, я просто использую это с помощью следующая команда:

ssh [email protected] -p2222 -i .vagrant/machines/default/virtualbox/private_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=Fatal

достаточно легко установить Vagrant на Win10-Ubuntu, но он также хочет, чтобы вы по какой-то причине установили Virtualbox, чего я бы предпочел не делать.

N. B. Я пробовал с ssh default -F vagrant-ssh-config метод, но я просто

отказано в разрешении (publickey,пароль).

Я предполагаю, что это потому, что IdentityFile путь-это путь Windows, тогда как в Bash он должен начинаться с /mnt/c/. Я полагаю, вы могли бы просто написать из файла, а затем изменить его, если это работает лучше для вас.

ssh vagrant@<host> пароль: vagrant

примеры:

залетный хранит закрытый ключ в ~/.vagrant.d/insecure_private_key и использует его для подключения к каждой машине через ssh, учитывая, что он настроен для подключения на порт 2200 (по умолчанию) это было бы что-то вроде:

ssh vagrant@localhost -p 2200 -i ~/.vagrant.d/insecure_private_key

Примечание: убедитесь, что закрытый ключ принадлежит пользователю под управлением Vagrant.

хотя, если ваша цель состоит в том, чтобы иметь мульти-машинная среда вы можете сделать это, используя config.vm.define.

вот пример, иллюстрирующий среду с 2 машинами, одна из которых называется web и другое databases:

config.vm.define 'web', primary: true do |web|
        web.vm.box = 'CentOS64'
        web.vm.hostname = 'vic-develop'
        web.vm.network 'private_network', ip: '192.168.50.10', virtualbox__intnet: true
        web.vm.synced_folder '../code', '/var/www/project', :mount_options => ["dmode=777,fmode=777"]

        web.vm.provision 'ansible' do |ansible|
            ansible.playbook = 'development-web.yml'
            ansible.sudo = true
        end
end

config.vm.define 'databases' do |db|
    db.vm.box = 'CentOS64'

    db.vm.network 'private_network', ip: '192.168.50.20', virtualbox__intnet: true
    db.vm.network :forwarded_port, guest: 3306, host: 8206

    db.vm.provision 'ansible' do |ansible|
        ansible.playbook = 'development-db.yml'
        ansible.sudo = true
    end
end

тогда у вас будут все бродячие команды, доступные для каждой машины, т. е. vagrant ssh web и vagrant provision databases.

если вы просто хотите, чтобы минимальная команда подключалась к вашему ящику, вам нужно знать порт, который он использует (печатается при выполнении vagrant up, или видимым делать vagrant ssh-config) и где ваш личный ключ SSH (также виден при выполнении vagrant ssh-config)

тогда это просто вопрос предоставления ключа и порта:

ssh -p 2222 -i $HOME/vagrantenv/.vagrant/machines/default/virtualbox/private_key [email protected]

существует способ, который воспроизводит, как удаленный пользователь может войти в систему

  1. редактировать Vagrantfile для вашего экземпляра добавления в

config.vm.network "private_network", ip: "192.168.33.10"

это добавляет частный IP для хоста (сделайте его тем, что вы хотите в диапазоне 192.168, пока он еще не используется

  1. перезапустите экземпляр с vagrant reload из командной строки
  2. скопируйте файл vagrant private_key в какой-то эквивалент Linux, который вы должны запустите на своем ящике (например, Cygwin если на windows, я использую windows 10) в свой домашний каталог cygwin, переименовав его по пути к чему-то описывающему хост, для которого должен использоваться ключ, например

your_virtual_host_name.pem

  1. вы найдете ключ под .бродяга\машины\по умолчанию\virtualbox\private_key

  2. перейдите в свой домашний каталог и сделайте свой обычный Unix ssh, так что

ssh -i your_virtual_hostname.pem [email protected]

где имя пользователя, вполне может быть vagrant если у вас есть стандартная коробка, посмотрите на вывод vagrant ssh-config для стандартных деталей ssh для коробки.

вот это

вы можете взять любой из ssh-config Аргументы, и передать их в ssh в командной строке как -o Key=value. Итак, для простой настройки одного хоста vagrant (возможно, вам придется немного больше работать с grep или perl для настройки multihost), вы можете сделать что-то вроде следующего (или заменить perl С sed если вы хотите):

ssh `vagrant ssh-config | tail -8 | perl -pe 's/^\s+/-o@/; s/\s/\=/;s/@/ /;s/\n/ /'` vagrant@localhost

Мой Env. это Win7 + Centos. Ответ с большинством согласия не работает для меня. После неудачи после попытки ssh -p [port] [usrname]@127.0.01, Я просто использую XShell для добавления нового сеанса с портом vagrant и именем пользователя.

это работает.

может быть, Xshell-это кандинат.

вы можете добавить SSH config для вашего бродячего хоста в SSH config.

  1. получить SSH config для бродячей машины в папке vagrant:vagrant ssh-config

  2. открыть {UserDir}/.ssh/config и добавить туда результат от предыдущей команды. Примечание: первая строка Host default означает псевдоним, который вы будете использовать в дальнейшем для . Назовите его своей бродячей машиной или реж. Если у вас есть только один бродячий dir-вы можете назвать его Host vagrant

  3. Ssh бродяге:ssh vagrant. Фамилия-это псевдоним из предыдущего шага.

Comments

    Ничего не найдено.