В этой заметке мы разберемся, что можно сделать, чтобы не жрать добровольно кактус, даже если жизнь очень сильно заставляет.
Есть такой класс админов, который держит рабочие станции под Windows, а периодически лазит на удаленные и не очень сервера через страшный Putty. Иногда им приходится, дабы достичь просветления и поэкспериментировать с новыми технологиями, использовать различные системы виртуализации прямо на своей рабочей станции (VMware, VirtualBox и некоторое количество других экзотических систем). Мы же сделаем наоборот и будем под рабочей станцией с Linux запускать экспериментальные виртуалки с Windows (как с рабочими лошадками, так и серверные редакции).
Главная идея в экспериментах: сделать их повторяемыми. Для этого мы воспользуемся старыми-добрыми костылями к системам виртуализации под названием Vagrant. Мы сможем из одного базового образа наплодить кучу виртуальных серверов, провести тесты и также затем пакетно через скрипты все убить. После экспериментов у нас останутся скрипты, которые даже прочитав через несколько лет, можно вспомнить общий принцип проведенных экспериментов (что не скажешь по настройке систем методом "клинки сюда и тыкни туда").
Для быстрой работы с виртуалками на базе Windows через Vagrant рекомендую на начальном этапе не усложнять процесс обучения и взять готовые образы (правда необновляющиеся с 2015 года) на официальном сайте. По приведенной ссылке вы найдете как дескоптные версии Win7, Win8 и Win8.1, так и серверные от Windows Server 2008 до Server 2012 различных модификаций.
Поиграться с Windows-системой на ближайшее время этого хватит, а рецепт как сделать образы под Windows 10 и Server 2016 будет приведен ниже и останется вам в качестве домашнего задания.
Рассмотрим работу на базе самого популярного из Windows образов - win-2008r2-standard-amd64-nocm
Нам нужно создать отдельный каталог под файлы виртуальной машины и скачать сам образ:
% vagrant box add opentable/win-2012r2-standard-amd64-nocm
% take -pv ~/vagrant/win2012
% vagrant init opentable/win-2012r2-standard-amd64-nocm
В нашем новом каталоге создастся файл Vagrantfile
с настройками ВМ, который как
минимум нужно будет изучить на предмет того как пробрасываются порты. Так как
нам придется работать с приложениями гостевой системы, пробрасываем 3389 (RDP)
порт ВМ на хост-систему. Запускаем ВМ:
% vagrant up
Можно ли без проброса RDP порта выполнить vagrant rdp
из локального терминала?
Обратите внимание, что это плагин
Пробуем зайти через RDP vagrant/vagrant.
Добрые дяди, которые сделали этот образ, добавили в него функционал ssh сервера, поэтому мы можем получить доступ к стандартному cmd.exe через "правильную" консоль. Однако, ssh сервер там несколько староват и умеет для авторизации только ssh-dss алгоритм, поэтому его придется прописать вручную.
Сначала можно проверить подключение из командной строки:
ssh [email protected] -p 2200 -oHostKeyAlgorithms=+ssh-dss
, где 2200 - номер порта, который появился в выводе vagrant up. Если на этом этапе все хорошо, то вы увидите долгожданное приглашение командной строки Windows.
Далее для удобства в файл ~/.ssh/config поместите эти строчки:
Host 127.0.0.1
HostKeyAlgorithms +ssh-dss
после чего должна работать стандартная команда vagrant ssh прямо из каталога с настройками ВМ.
Для того чтобы удобно удаленно дергать за ниточки виндовые машинки можно воспользоваться плагином vagrant-winrm. Судя по документации он умеет: выполнять команды (в том числе с повышенными привилегиями), перекачивать файли и отображать настройки WinRM (хотя у меня их так и не получилось посмотреть).
Документацию можно почитать здесь
Примеры команд:
- Получить настройки сетевого интерфейса:
% vagrant winrm -c 'ipconfig'
Существует два варианта подключения к виртуальной машине через механизм VRDE - VNC и RDP (последнее действительно только после установки пакета расширений от Oracle). Только один из вариантов может быть активирован одновременно.
Переключение в режим VNC:
VBoxManage setproperty vrdeextpack VNC
Обратите внимание, что VNC в отличии от RDP не поддерживает указания нескольких портов, а аутентификация пользователя организована иначе, чем в последней. VNC может работать только с парольной аутентификацией и не поддерживает использование парольных хэшей. Единственной доступной возможностью будет указать этот пароль открытым текстом в конфигурации виртуальной машины и вы можете сделать это командой:
VBoxManage modifyvm "VM name" --vrdeproperty VNCPassword=secret
Чтобы переключиться обратно на RDP-режим, воспользуйтесь командой:
VBoxManage setproperty vrdeextpack "Oracle VM VirtualBox Extension Pack"
http://mridgers.github.io/clink/
https://null-byte.wonderhowto.com/how-to/enable-new-native-ssh-client-windows-10-0181662/
P.S. По состоянию на середину 2018 года OpenSSH клиент уже включен в состав системы по-умолчанию (по крайней мере для Win10 Pro).
Смотрим что у нас есть в наличии:
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Дальше ставим клиент (у меня уже был Installed) или сервер:
> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
> Start-Service -Name sshd
См. выше
https://winaero.com/blog/enable-openssh-server-windows-10/ https://www.bleepingcomputer.com/news/microsoft/how-to-install-the-built-in-windows-10-openssh-server/
https://app.vagrantup.com/StefanScherer/boxes/windows_2016_docker