SSH для новичков
Программистов, сисадминов, devops’ов, тестировщиков часто объединяет использование некоторых общих технологий. Например, возможность иметь удалённый доступ к серверу пригодилось бы любому из указанной выше анекдотичной компании. Поэтому в этой статье мы рассмотрим основы работы с протоколом SSH на базовом уровня (без генерации ключей, подписей, мам, пап и кредитов). «Продвинутое» использование посмотрим уже отдельно, в следующий раз. Материал подготовил Макс, автор YouTube-канала PyLounge. Поехали!
Введение
SSH (Secure SHell — защищенная оболочка) — сетевой протокол прикладного уровня, предназначенный для безопасного удаленного доступа к различным системам (Linux, Windows, Mac).
Данный протокол шифрует всю передаваемую информацию по сети. По умолчанию, используется 22-й порт. В основном он нужен для удаленного управления данными пользователя на сервере, запуска служебных команд, работы в консольном режиме с базами данных.
Эта служба была создана в качестве замены не зашифрованному Telnet и использует криптографические техники, чтобы обеспечить, что всё сообщение между сервером и пользователем было зашифровано.
Чтобы установить SSH-соединение, необходимы два компонента: SSH-сервер и SSH-клиент. Сервер прослушивает определенный порт (по умолчанию это порт 22) и при успешной аутентификации дает доступ пользователю. Все команды, которые используются на SSH-клиенте, отправляются через защищенный канал связи на SSH-сервер, на котором они выполняются и откуда отправляют результат работы обратно клиенту.
SSH-сервер
Устанавливается на управляемой операционной системе и принимает входящие подключения от клиентских машин, проверяя соединение одним из способов:
по IP-адресу клиента, что не слишком безопасно из-за риска подмены;
по публичному ключу клиента и имени пользователя. Нужно создать приватный (закрытый) и публичный (открытый) ключ. Зашифровав информацию одним ключом, можно расшифровать ее только другим;
по паролю клиента, который передается в зашифрованном виде. Это один из наиболее распространенных вариантов. Вводить его нужно при каждом подключении.
Платные и бесплатные SSH-серверы есть для всех распространенных ОС:
Linux — dropbear, lsh-server, openssh-server;
Windows — freeSSHd, copssh, WinSSHD, OpenSSH и т. д.
SSH-клиент
Используется для входа на удаленный сервер и выполнения команд. Через клиент выполняется управление удаленным компьютером.
SSH-клиенты разработаны для всех ОС. Имеют платные и бесплатные версии:
Linux/BSD — openssh-client, putty, ssh, Vinagre;
Windows — PuTTY, SecureCRT, ShellGuard;
Встроенный SSH-клиент Windows, основанный на OpenSSH, предустановлен в ОС, начиная с Windows 10 1809.
Установка OpenSSH на Ubuntu
Установка с помощью менеджера пакетов apt-get:
Проверка SELinux
Security Enhanced Linux, или SELinux – это усовершенствованный механизм контроля доступа, встроенный в большинство современных дистрибутивов Linux. Первоначально он был разработан Агентством национальной безопасности США для защиты компьютерных систем от вторжения злоумышленников и взлома. SELinux также может помешать работе с ssh. Поэтому необходимо убедиться, что он отключен, либо отключить его.
Устанавливаем доп. инструменты для работы с сетью и настройками безопасности:
Проверяем статус SELinux. Состояние должно быть disable .
Подключение к виртуальной машине с типом подключения NAT
Если виртуальная машина использует тип сетевого подключения NAT, то первоначально необходимо настроить проброс портов. Пробросим порт хоста 2222 (или любой свободный) на гостевой порт виртуальной машины номер 22 (порт ssh по умолчанию).
После этого мы можем подключиться из Windows к нашей виртуальной машине.
Подключение по ssh через PuTTY
Т.к. в качестве сетевого подключения у виртуальной машины используется NAT, при подключении мы будем указывать петлевой адрес localhost (127.0.0.1) c портом, на который был назначен проброс.
После этого вводим имя пользователя (пользователь должен существовать в linux. ) и пароль от этого пользователя.
Подключение по ssh через Командную строку Windows (cmd)
Запускаем командную строку сочетанием клавиш Win + R . В открывшемся окне указываем cmd. Нажимаем OK.
В общем видео подключение по ssh имеет вид:
Если для подключения используется стандартный порт ssh — 22, то порт можно не указывать.
В открывшемся окне вводим команду:
Вводим пароль пользователя. Всё. Вы великолепны!
Подключение к виртуальной машине с типом подключение Сетевой мост
С типом подключения Сетевой мост необходимо выдать статический ip для Linux системы. Дальнейшее подключение будет уже по этому, выданному ip, а не через localhost.
Установка статического ip
Начиная с выпуска Ubuntu 17.10 NetPlan теперь это инструмент настройки сети по умолчанию для управления настройками сети, заменяющий файл конфигурации /etc/network/interfaces , который использовался в предыдущих версиях.
Файлы конфигурации для Netplan находятся в каталоге /etc/netplan и написаны на языке YAML. В этом каталоге вы найдете файлы конфигурации YAML.
Откроем конфигурационный файл:
Отредактируем конфигурационный файл:
ethernets — указывает на проводное Ethernet подключение;
enp0s3 — имя сетевого интерфейса (можно узнать командой ifconfig);
dhcp4 — автоматическая выдача ipv4-адреса с помощью службы dhcp (для ipv6 указывать dhcp6);
addresses — ip-адрес и маска сети, которые назначаются компьютеру;
gateway4 — шлюз по умолчанию;
nameservers — список dns-серверов.
Посмотреть настройки можно с хостовой машины на Windows с помощью команды ipconfig /all.
Чтобы применить изменения и перезагрузить сеть, вводим команду:
Подключение по ssh
Запускаем командную строку сочетанием клавиш Win + R . В открывшемся окне указываем cmd. Нажимаем OK.
В открывшемся окне вводим команду:
Вводим пароль пользователя. Всё. Вы великолепны (2)!
Заключение
Несмотря на высокую защиту протокола, использование стандартного порта значительно повышает риск взлома сервера. Например, это можно сделать при помощи brute-force (атака полным перебором). Порт 22 — открытый, поэтому злоумышленнику нужно только подобрать логин и пароль к серверу. Это сложно, но возможно. Чтобы максимально ограничить доступ к серверу для злоумышленников (настроить брандмауэр, iptables), можно сменить 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 нам нужно выполнить следующую команду:
ssh user@localhost -p 2222
Где « 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 ».
Как и предыдущий способ, вариант с использованием сетевого моста отлично работает, при этом виртуальная машина не теряет доступа к интернету.
How to use Putty to connect to a virtual machine?
On running ifconfig eth1 , I get inet addr: 192.168.56.11 and many more values.
How do I use Putty (ssh) here? I entered 192.168.56.11 on the Host Name and 80 on the Port Number, but Putty can’t connect.
I am trying to follow the guidelines from this course:
What exactly does Putty do? I don’t understand why I need to do this.
4 Answers 4
PuTTY will open a «network» between both machines. You’ll get a console (like the shell) when you’ll be connected. Really useful to administrate remote server from your computer.
Usually, the port is not 80, but 22.
For oracle vm virtual box:
1)Power of your machine
2)goto Settings -> Network -> Adapter1 -> Enable Network Adapter -> select «Bridge Adapter» in Attache To tab and click ‘ok» button
3) open terminal in virtual box and type» ifconfig»
in first paragraph
eth0 Link encap:Ethernet HWaddr 08:00:27:fb:d1:28 inet addr:172.16.2.199
4) Here ip address is «172.16.2.199» using this ip and port 22 ,you can login through putty and winscp also
Try opening terminal through VMWare’s console on Ubuntu and then run below given code:
sudo apt-get install openssh-server
I had faced the same issue.
Note: I assume you have already started the VM, importing the ISO image, and tried to access the machine with 10.X.X.X or 172.X.X.X range IP address from the Putty agent and got an time-out message.
Before making any changes to the network configuration on the VM or trying bridge-adapters, as suggested by many of the articles online, I suggest you to check 2 robust points which forms the bus for your VM on VirtualBox and Putty agent installed on your system.
2nd Point: Adding a host-only adapter, under the network settings of your VM.
If you follow these steps before booting up the VM for the first time, your VM will be allocated with a 192 range IP address (by the dhcp) the moment it boots up and starts running. Now all you need to do is, install and openssh-server and use the 192-range IP address with the Putty agent and Voila!!
SSH. Подключиться к виртуальной машине по SSH
SSH-протокол — сетевой протокол, предназначенный для защищённого удаленного доступа к операционной системе и передачи данных. Для подключения по SSH удостоверьтесь, что в настройках файрвола установлено соответствующее правило для входящего трафика.
Подключение с помощью SSH-ключей. Подготовка
Для подключения к виртуальной машине необходимо создать открытый ключ, который будет храниться на виртуальной машине, и закрытый ключ, который размещается вне виртуальной машины, в удобном для вас хранилище.
Генерация SSH-ключей в Windows 7/8
Генерация SSH-ключа с использованием командной строки (cmd) в операционных системах Windows 7/8 не предусмотрена.
Для генерации воспользуйтесь приложением PuTTY и входящим в пакет дополнением PuTTYgen.
1. Скачайте и установите приложение PuTTY.
2. Запустите приложение PuTTYgen.
3. В поле «Type of key to generate» укажите «RSA».
4. Для поля «Number of bits in a generated key» установите значение «2048».
5. Нажмите Generate.
Важно! Во время генерации ключа водите курсором в поле «Key» до тех пор, пока ключ не появится в поле.
6. В поле «Key passphrase» введите надёжный пароль.
7. Подтвердите пароль в поле «Confirm passphrase».
8. Нажмите кнопку Save private key и сохраните закрытый ключ.
Внимание! Никогда не передавайте закрытый ключ и пароль сторонним лицам.
9. Нажмите Save public key и сохраните открытый ключ в удобном для вас месте.
10. Вы всегда можете открыть и скопировать сохранённые ключи при помощи приложения «Блокнот».
Генерация SSH-ключей в Linux/MacOS/Windows 10
Чтобы сгенерировать ключи на Linux/MacOS/Windows 10:
1. Откройте консоль, терминал (MacOS) или командную строку (cmd.exe) для Windows 10.
2. Выполните команду:
3.Укажите название ключа в строке «Enter file in which to save the key».
Внимание! Если не указывать директорию (например, «.ssh/» ), ключи сохранятся в «
./<имя ключа>» (для Linux/MacOS) или в «C:\Users\<имя_пользователя>\<имя ключа>» (для Windows 10).
4. Нажмите Enter.
5. Далее задайте пароль для ключа или оставьте поле пустым и нажмите Enter, если хотите создать ключ без пароля.
6. Подтвердите пароль или оставьте поле пустым и нажмите Enter для сохранения ключа без пароля.
7. Ключ создан в директории по умолчанию или в той, которую вы прописали.
8. Публичная часть ключа будет сохранена в файле «<имя_ключа>.pub». Используйте его для последующего добавления к виртуальной машине. Файл можно открыть в текстовом виде в приложении «Блокнот».
Генерация SSH-ключей в личном кабинете сервиса Облако
Для создания SSH-ключа из личного кабинета следуйте описанным ниже шагам.
1. В личном кабинете перейдите в раздел Ключи SSH.
2. Нажмите Сгенерировать ключ.
3. Введите название ключа и нажмите Создать SSH ключ.
Важно! Допускается использование символов только латинского алфавита, нижнего подчеркивания, пробелов и точек. Длина имени должна быть от 3 до 63 символов.
4. Ключ сгенерируется и отобразится в списке SSH-ключей, его открытая часть уже будет храниться в системе, а закрытый ключ будет загружен на устройство в папку по умолчанию.
5. Для просмотра закрытого ключа найдите его на устройстве и откройте с помощью приложения «Блокнот».
Добавление SSH-ключей в личном кабинете сервиса Облако
Чтобы добавить уже созданный SSH-ключ в личный кабинет:
1. В панели управления сервиса Облако перейдите в раздел Ключи SSH.
2. Нажмите Добавить SSH ключ.
3. В поле «Содержимое ключа SSH» вставьте публичную часть SSH-ключа.
4. Задайте имя ключа в поле «Имя».
5. Нажмите Добавить SSH ключ.
Ключ появится в списке SSH-ключей.
Удаление SSH-ключей в личном кабинете сервиса Облако
1. Выберите SSH-ключ, который нужно удалить.
2. Нажмите напротив него на знак ···.
3. Выберите Удалить.
Генерация и добавление SSH-ключей при создании виртуальной машины
В личном кабинете у вас есть возможность создать и добавить SSH-ключ при создании виртуальной машины.
В процессе создания виртуальной машины в разделе SSH-ключ вам будет предложено:
добавить уже хранящийся в личном кабинете ключ, выбрав его из выпадающего списка;
добавить уже имеющийся в локальном хранилище ключ;
сгенерировать новый ключ.
1. При нажатии на Добавить SSH ключ откроется диалоговое окно. Добавьте открытую часть SSH-ключа, введите имя ключа для идентификации его в нашей системе и сохраните его.
Далее выберите ключ из раскрывающегося списка, чтобы добавить его к виртуальной машине.
2. При нажатии на кнопку Сгенерировать SSH ключ, откроется диалоговое окно, введите имя ключа для идентификации его в системе.
Публичный ключ автоматически добавится к виртуальной машине, а приватный скачается на ваше устройство в формате .pem.
После добавления или генерации нового SSH-ключа ключи будут появится в разделе Ключи SSH.
Подключение с помощью пароля. Подготовка
Для подключения по SSH с помощью пароля вам нужно указать пароль во время создания машины.
Добавление пароля
При создании виртуальной машины в пункте Дополнительные возможности активируйте опцию Пользовательские данные. Откроется окно, куда можно вписать скрипт для обработки cloud-init агентом, запущенным на виртуальной машине.
Впишите в поле код:
С указанным паролем вы сможете подключаться к виртуальной машине по SSH или через личный кабинет.
Пароль не обязательно добавлять в явном виде, можно вписать его хэш-сумму (тот же пароль, только преобразованный; машина сможет его считать, а для человека он выглядит как случайный набор символов). Тогда, даже если кто-то попадёт в систему, то всё равно не узнает пароль — внутри будет храниться хэш-сумма. А система даст войти только по паролю. Для генерации хэш-суммы вы можете воспользоваться скриптом на Python:
Подключение к виртуальной машине по SSH
Подключение по SSH с Windows 7/8
Важно! Подключение к виртуальной машине по SSH с использованием командной строки (cmd) в операционных системах Windows 7/8 не предусмотрено.
Для подключения воспользуйтесь приложением PuTTY.
1. Скачайте и запустите приложение PuTTY.
2. В разделе Session в поле «Host Name (or IP address)» введите IP-адрес виртуальной машины, который можно найти в столбце «IP адрес» в разделе Виртуальные машины.
Важно! Если вы создали машину только с приватным адресом, добавьте плавающий IP. Для этого в разделе Виртуальные машины нажмите на имя виртуальной машины, после чего в открывшемся окне нажмите Добавить IP.
3. В поле «Port» установите «22» — стандартный порт для подключения по SSH.
4. Далее для поля «Connection type» задайте значение SSH.
5. (Пункт только для тех, кто подключается с помощью SSH-ключа) в правой части экрана перейдите в Connection → SSH → Auth.
6. (Пункт только для тех, кто подключается с помощью SSH-ключа) нажмите Browse.
7. (Пункт только для тех, кто подключается с помощью SSH-ключа) выберите файл с приватным ключом для виртуальной машины в формате .ppk.
Важно! Если ваш приватный ключ сохранен в формате .pem, конвертируйте его в формат .ppk, как описано в статье «Конвертировать SSH-ключ из формата PEM в PPK».
8. Нажмите Open. Откроется консоль.
9. В строке «login as» введите имя пользователя, выданное вам при создании виртуальной машины. Оно находится в меню виртуальной машины, там стоит надпись вида «[логин]@[IP машины]. Чаще всего логин совпадает с названием ОС. Например, для машины ниже это «ubuntu».
10. (Пункт только для тех, кто подключается с помощью пароля) введите пароль, заданный вами при создании машины.
11. Нажмите Enter.
12. Вы подключились к виртуальной машине.
Подключение по SSH с Windows 10, Linux OS или Mac OS
Внимание! Если вы используете Linux OS или Mac OS, перейдите к шагу №6.
В Windows 10 есть встроенный клиент OpenSSH, который позволяет получать доступ к серверу через консоль так же, как и на Linux OS. По умолчанию этот компонент не активирован.
Для его установки:
1. Перейдите в меню Параметры Windows.
2. Перейдите в раздел Приложения, нажмите Дополнительные возможности.
3. В списке найдите OpenSSH Client и нажмите для раскрытия подробного описания.
4. Нажмите Установить.
5. Дождитесь завершения установки. После того, как OpenSSH Client будет установлен, перезагрузите компьютер для корректного применения настроек. Для командной строки станет доступна утилита SSH.
6. Откройте командную строку/терминал и введите команду со своими значениями:
«ssh username@192.168.1.92» — для подключения с помощью пароля;
«ssh username@192.168.1.92 -i «C:\Users\username\.ssh\id_rsa»»: — для подключения с помощью ключа.
Имя пользователя, указано справа от кнопки Открыть консоль.
IP-адрес вашей виртуальной машины.
Важно! Если вы создали виртуальную машину только с приватным интерфейсом, создайте плавающий IP-адрес и используйте его при подключении к ВМ по SSH.
Путь к файлу с приватным ключом в вашем локальном хранилище.
Ключ должен быть в формате .pem.
7. Утилита предложит добавить устройство в список известных, напишите «yes», чтобы добавить, или «no», чтобы не добавлять. Нажмите Enter.
8. (Пункт только для тех, кто подключается с помощью пароля) введите пароль, который вы задали при создании машины.