- Как подключиться к виртуальной машине VirtualBox по SSH
- Проброс портов для SSH
- Подключение через сетевой мост
- Как подключиться по SSH из Linux
- Проверка наличия утилиты и установка OpenSSH
- Как подключиться по SSH с помощью пароля
- Как отключиться от севера и прервать SSH сессию
- Как подключиться по SSH с помощью ключа
- Генерация (создание) SSH-ключа
- Добавление ключа в список доверенных на сервере
- Подключение к серверу по ключу
- Как ограничить подключение по паролю
- Подключение к локальной виртуальной машине Linux по SSH или как решить задачу о двух стульях ничьей
Как подключиться к виртуальной машине VirtualBox по SSH
После установки серверного дистрибутива Linux на виртуальную машину VirtualBox вы можете обнаружить, что подключение по SSH не работает. Это связано с тем, что по умолчанию на VirtualBox используется подключение к интернету с помощью NAT.
При таком способе подключения у вас нет возможности подключаться к виртуальной машине из своей реальной операционной системы. В частности, вы не сможете подключиться по SSH.
В данной статье мы рассмотрим сразу два способа, как можно решить эту проблему. Первый вариант – проброс портов через NAT, а второй – использование сетевого моста. Оба этих способа сохраняют доступ к интернету на виртуальной машине.
Проброс портов для SSH
Для проброса портов вам нужно знать IP адрес, который присваивается виртуальной машине. Для этого запустите виртуальную машину и выполните на ней команду « ifconfig ». В ответ вы получите информацию о сетевых подключениях, в которой будет указан и IP адрес. В нашем случае был получен IP адрес – « 10.0.2.15 ».
Обратите внимание, если в вашей системе нет команды « ifconfig », то ее нужно будет установить отдельно. В случае Debian и Ubuntu Linux это можно сделать с помощью команды « apt-get install net-tools ».
После того как мы узнали IP адрес виртуальную машину нужно выключить и открыть ее настройки в программе VirtualBox.
В настройках виртуальной машины нужно открыть раздел « Сеть », открыть дополнительные настройки и перейти к пробросу портов.
После этого откроется окно для проброса портов. Здесь нужно нажать на кнопку « Добавить » и заполнить следующие данные:
- Имя : SSH.
- Протокол : TCP.
- Адрес хоста : оставляем пустым или указываем 127.0.0.1.
- Порт хоста : любой свободный порт на вашей основной системе, например, 2222.
- Адрес гостя : IP адрес, который был присвоен вашей виртуальной машине. В нашем случае это 10.0.2.15.
- Порт гостя : порт SSH на виртуальной машине, по умолчанию – 22.
После проброса порта закрываем все окна с помощью кнопки « ОК ».
После этого можно подключаться к виртуальной машине по SSH. Для этого можно использовать клиент OpenSSH, который доступен в Windows 10. Поскольку порт « 2222 » на основной системе был проброшен на порт « 22 » на виртуальной машине, то для подключения по SSH нам нужно выполнить следующую команду:
Где « user » — это имя пользователя, а « 2222 » — используемый порт на основной системе.
Аналогичным способом выполняется подключение с помощью PuTTY . В поле « Host Name » указываем « localhost », а в поле « Port » — « 2222 ». Более подробно об OpenSSH и PyTTY в отдельной статье о подключении по SSH.
Как видно по скриншоту вверху, данный способ отлично работает, и мы успешно подключились по SSH к виртуальной машине VirtualBox.
Подключение через сетевой мост
Также есть альтернативный способ подключения к виртуальной машине по SSH для этого нужно изменить тип подключения с « NAT » на « Сетевой мост ». В этом случае виртуальная машина будет подключена к вашей локальной сети и получит IP адрес от вашего роутера из того же диапазона, что и ваша основная система.
Для этого нужно выключить виртуальную машину и зайти в ее свойства в программе VirtualBox. В настройках нужно зайти в раздел « Сеть » и включить тип подключения « Сетевой мост ».
После этого нужно запустить виртуальную машину и выполнить на ней команду « ifconfig » для того, чтобы узнать, какой IP адрес она получила от роутера. В нашем случае был получен IP адрес « 192.168.1.214 ».
После этого к виртуальной машине можно подключаться по SSH. Для этого нужно просто использовать IP адрес, который был ей присвоен роутером. Например, для того чтобы подключиться с помощью клиента OpenSSH нужно выполнить следующую команду:
Где « user » — это имя пользователя, а « 192.168.1.214 » — это ее IP адрес.
Аналогично работает и подключение с помощью PuTTY. Вводим « 192.168.1.214 » и подключаемся по стандартному порту « 22 ».
Как и предыдущий способ, вариант с использованием сетевого моста отлично работает, при этом виртуальная машина не теряет доступа к интернету.
Источник
Как подключиться по SSH из Linux
Для удаленного подключения к серверу есть много способов, но самый популярный и простой среди них это защищенный сетевой протокол SSH (Secure Shell) с помощью утилиты OpenSSH. По-умолчанию утилита дает доступ только к командной строке удаленного севера, но при желании можно запустить программы с графический интерфейсом прямо с сервера. Если вы хотите ознакомиться с полным списком команд утилиты, то это можно сделать здесь. В этой статье мы разберем как подключиться по SSH и самые основные команды, которые требуются чаще всего.
Проверка наличия утилиты и установка OpenSSH
Как правило, во многих дистрибутивах Linux утилита OpenSSH уже установлена по-умолчанию, но конечно же есть исключения. Для проверки наличия утилиты нужно ввести в терминал коротую команду:
И если вывод будет содержать возможные опции использования в примерно таком виде, значит OpenSSH установлен:
Если же вывод содержит сообщение, что команда не найдена, то нужно установить openssh-client .
Если у вас Debian или Ubuntu, то для установки введите:
Если у вас CentOS или Fedora, то введите
Как подключиться по SSH с помощью пароля
Обычное подключение по SSH без дополнительных опций выглядит очень просто. Достаточно ввести логин, IP сервера и пароль. Допустим хостинг-провайдер нам выдал следующие данные после покупки сервера:
- IP-адрес сервера: 80.90.255.255
- Логин: root
- Пароль: xvFkWsIys
Исходя из этого мы формулируем команду в следующем виде ssh логин@IP-адрес:
Если подключение осуществляется впервые, то утилита задаст вопрос, стоит ли добавлять в список доверенных хостов. Соглашаемся, набрав yes и нажав Enter.
Далее утилита запросит пароль пользователя
Его можно ввести вручную или вставить из буфера обмена. При вводе пароля не будут появляться звездочки или какие-либо условные символы, это нормально. После ввода пароля вы попадаете в командную строку сервера, к которому подключались. Это значит, что теперь все введенные команды будут выполнятся именно на сервере.
Как отключиться от севера и прервать SSH сессию
Отключиться от сервера можно двумя простыми способами. Первый это ввести команду exit :
Также можно нажать комбинацию клавиш Ctrl + D, что также прервет SSH сессию и вернет нас туда, откуда мы подключались.
Как подключиться по SSH с помощью ключа
Выше мы разобрали простое подключение по паролю, но гораздо безопаснее подключаться, используя ключ. В этом случае нужно вводить пароль от ключа, а не юзера сервера. Возможно даже вообще не вводить никаких паролей, а использовать только файл-ключ, что является очень удобным и относительно безопасным. Но обо всем по порядку.
Генерация (создание) SSH-ключа
Для начала нужно создать SSH-ключ на той машине, с которой будем подключаться к серверу, то есть ключ создается на стороне клиента, для этого не нужно заходить на сервер.
Чтобы создать ключ, нужно ввести команду ssh-keygen -f /папка/где/создать/ключ . В примере мы будем использовать самую распространенную папку для ключей, которая находится в домашней папке пользователя: /home/имя_пользователя/.ssh/название_ключа или ее укороченной версией
После ввода утилита попросит задать пароль для ключа. Здесь довольно важный момент. Можно вовсе не задавать пароль и просто нажать Enter. В таком случае подключение к серверу будет осуществляться только по ключу и без всякого ввода пароля.
Но в примере мы будем «параноиками» и зададим пароль на использование ключа. Придумаем именно отдельный пароль, не тот, что от пользователя сервера. Можно выбрать вариант проще, который возможно будет без труда запомнить и ввести вручную, например brandy-coin-13! . Его мы будем в будущем вводить каждый раз, как потребуется использовать ключ. И так, задаем…
После этого нас попросят ввести пароль еще раз, повторяем его и если вы правильно ввели путь до папки для ключа, то должен получиться примерно такой вывод:
В выводе строка с текстом Your identification has been saved in говорит в какой именно папке сохранился ключ.
Добавление ключа в список доверенных на сервере
В предыдущем этапе мы только создали ключ. Пока он не подходит ни к одному серверу. Чтобы использовать его для входа на наш сервер, необходимо добавить его в список доверенных ключей на этом сервере. Звучит сложно, но на самом деле все обходится лишь одной командой, которая содержит путь до ключа, логин и IP-адрес сервера в своих опциях и имеет такой вид: ssh-copy-id -i /путь/до/ключа логин@IP-адрес .
После ввода команды потребуется разово ввести пароль от сервера, после чего ключ будет авторизован на сервере.
Подключение к серверу по ключу
Теперь можно подключаться к серверу, используя ключ. Для этого вводим команду, которая содержит логин, IP-адрес сервера и путь до ключа с опцией -i: ssh логин@IP-адрес -i /путь/до/ключа
После ввода потребуется ввести пароль от ключа, который мы задавали в прошлом разделе. Если вы тогда просто нажали Enter, ничего не вводили, то вас сразу перекинет на север, без запроса пароля.
Как ограничить подключение по паролю
Если ограничить подключение по паролю, то использование утилиты OpenSSH будет более безопасным, потому что даже если украдут ваш пароль, то он будет практически бесполезным, потому что зайти на сервер по SSH, используя его, будет уже невозможным.
Для выставления ограничений необходимо иметь права администратора, вы должны быть авторизованным под root или использовать sudo перед каждой командой. В примерах будет использоваться вариант без sudo , чтобы не было расхождений с предыдущими примерами.
Для начала зайдем на сервер по ключу:
Используя консольный текстовый редактор nano, откроем под root файл настроек OpenSSH:
После чего мы увидим содержимое файла настроек. Нам нужно найти строчку:
Убрать # в начале и заменить yes на no . То есть ее надо преобразить вот в такой вид:
Далее нажимаем сначала Ctrl + O , затем Enter, чтобы сохранить. И Ctrl + X, чтобы выйти.
Теперь, чтобы эти настройки вступили в силу, нужно перезапустить службу SSH. Для этого необходимо ввести следующую команду.
Теперь выйдем с сервера и вернемся туда, откуда подключались.
И попробуем обратно подключиться к северу по паролю.
И видим, что сервер нас больше таким способом пускать не намерен. А теперь попробуем с помощью ключа.
На этом настройка завершена, ключ не теряйте, а если потеряете, то пишите хостинг-провайдеру, чтобы он дал вам доступ по VNC, с помощью которого вы сможете включить вход по паролю обратно.
Чтобы сервер был в безопасности, советую настроить на нем фаервол и добавить порт SSH в список доверенных.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Подключение к локальной виртуальной машине Linux по SSH или как решить задачу о двух стульях ничьей
Думаю, у многих, прочитавших заголовок возникнет справедливый вопрос: «Зачем такое извращение?» На самом деле, у этого занятия есть определённый круг применений. Самое очевидное из них — это необходимость в пользовании для учёбы или работы одной операционной системой, в то время как вам больше нравится другая.
Некоторые воскликнут: «Но ведь можно поставить две системы в DualBoot или виртуальную машину, с которой можно общаться напрямую!» К сожалению, ни один из этих трёх способов не является панацеей. При использовании первого приходится постоянно скакать между системами, а также он доступен не на всех устройствах (на моём MacBook Pro 2017-ого года поставить нативно Linux — весьма неприятное занятие). Второй также требует работы с двумя разными системами, что может сильно ударить по чувству перфекционизма, а также требует весьма больших мощностей для использования средств по сглаживанию разницы между ними. Про третий же сейчас чуть подробнее расскажу.
Начну с предупреждения о том, что если вам в разработке необходим доступ к графическому интерфейсу, то этот способ не для вас (если пользуетесь Windows, то рассмотрите вариант с WSL. Linux там очень урезанный, зато можно подключить к ней X Window System). Будем подключаться к дистрибутиву на базе ядра Linux, но этот способ можно интерполировать на другие системы. Также замечу, что изначально мною рассчитывалось сделать небольшой туториал для одногруппников, но тема оказалась достаточно интересной, чтобы попытаться превратить её в статью. Поэтому то, о чём я собираюсь говорить может показаться некоторым пользователям Хабра слишком тривиальным.
У меня же возникла потребность в таком решении в виду следующих причин:
- Valgrind на MacOS Mojave не работает (на High Sierra он хотя бы компилировался, а -fsanitize мне не нравится).
- У моего устройства весьма небольшой объём батареи, в сравнении с моделями 2015-ого года, и ему часто приходится держаться до конца пятой пары.
- Не хочется перенастраивать VIM
- «Всё, что нас не убивает, делает нас сильнее»
Что же? Перейдём непосредственно к установке!
Для начала перейдём на сайт Ubuntu и скачаем установочный образ Ubuntu Server
Можно, в принципе, выбрать и любой другой дистрибутив, даже всемогущий Arch, но мне было лениво.
После чего создаём новую виртуальную машину в вашей любимой для этого программе. На Parallels и VMWare это делается просто и естественно, а на VirtualBox или QEMU придётся покурить мануалы. В случае первых двух рекомендую отключить разные не особо нужные плюшки типа «общих принтеров». Также можете попробовать ограничить производительность виртуальной машины для сохранения энергии, но не переборщите. В противном случае система просто не запустится.
В общем, желательно немного покопаться в настройках нашей подопечной для максимальной производительности. Самое главное — это опция «Общая сеть» (Shared network). Она позволяет машине выходить в сеть, и другим устройствам к ней удалённо подключаться.
Выберите язык и начните установку Ubuntu Server. Вас должен встретить такой экран —
(Да, он просит выбрать язык ещё раз)
Дальше ничего сложного (собственно, и не было). Просто тыкайте «далее» прямо как в Windows. Но, как говорится:
Потом настройте пользователя и запомните его логин (не путайте с полным именем) и пароль.
Также хочу отметить, что установщик попытается скачать дополнительные 66 мегабайт пакетов.
Собственно, вскоре установка завершится и вам будет предложено перезагрузить виртуальную машину, но перед этим удостоверьтесь, что образ установочного диска был отключен от неё. Потом, если всё прошло хорошо, вы загрузитесь в вашу новую систему, но сначала введите ваш логин и пароль.
После этого всё должно быть готово, однако вы можете попробовать дополнительно настроить подключение по SSH. Для этого отредактируйте с помощью nano или Vim (чтобы из него выйти, наберите :wq) файл /etc/ssh/sshd_config от имени администратора:
Для этого просто раскомментируйте нужные вам строки (удалите ‘#’ перед каждой из них). После чего перезапустите службу для подключения по SSH:
Далее нам нужно узнать ip адрес нашего устройства. Для этого нам пригодится команда: Найдите среди вывода программы ваше устройство (иногда его название можно определять в настройках виртуальной машины) и запомните его адрес, помеченный как inet:
После всего этого окошко с нашей системой можно свернуть. Теперь давайте всё-таки попробуем к ней подключиться. для этого введём в терминал родной системы
где «hovushka» и «10.211.55.28» нужно заменить на ваш логин и ip адрес. Далее вас попросят ввести ваш пароль и вуаля! Вы зашли в Ubuntu:
Но на этом веселье не заканчивается! Мы, конечно, настроили подключение, и можем управлять виртуальной машиной, но это весьма бесполезно, так как мы не можем получить так просто доступ к её локальным файлам из родной системы. Конечно, Vim и по SSH прекрасно работает, но всё ещё отличий от простого использования виртуальной машины практически нет.
Я предлагаю поступить более креативно и воспользоваться sshfs. На MacOS он ставится летящей походкой через brew (он попросит сначала поставить FUSE). После этого достаточно ввести команду
где так же следует заменить логин и ip адрес, а «
/SSH» на какую-нибудь удобную для вас директорию. Далее к ней будет примонтирован домашний каталог нашего пользователя из виртуальной машины:
Теперь можно файлами виртуальной системы как угодно распоряжаться из-под хоста и пользоваться привычными программами и приложениями, запуская нужные команды через подключенный по SSH терминал:
У этого способа, несмотря на его большую аутентичность, есть свои минусы. Во-первых многие из них унаследованы от обычного использования виртуализации (например, падение производительности). Во-вторых, будет присутствовать небольшая задержка в записи изменений на виртуальный диск (вимерам может не понравится). Ну и в-третьих, некоторые виртуальные машины умеют видеть файлы с родной системы, но из командной строки это сложнее настроить и вам придётся пользоваться окном самой виртуальной машины, что накладывает ряд ограничений.
Напоследок хочу упомянуть, что несколько идей было взято с этого сайта.
Источник