Помощь. Использование SSH для подключения к удаленному серверу Ubuntu Ssh подключение к серверу linux

С помощью защищенного протокола SSH администраторы подключаются к своим серверам для безопасной работы. Рассмотрим особенности этого протокола подробнее:

Что такое SSH-протокол

SSH-протокол (от англ. Secure Shell ) - криптографический сетевой протокол, предназначенный для удаленного доступа к операционной системе и осуществления безопасного удаленного управления в рамках незащищенной сети (например, через интернет).

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

Основные функции, доступные при использовании SSH-протокола:

  • Передача любых данных через защищенное SSH-соединение, включая сжатие данных для последующего шифрования.
  • X11 Forwarding - механизм, позволяющий запускать программы UNIX/Linux-сервера в виде графической оболочки, как в Windows (использовать X Window System).
  • Переадресация портов - передача шифрованного трафика между портами разных машин.

Безопасность SSH-соединения обеспечивается:

  • шифрованием данных одним из существующих алгоритмов
  • аутентификацией сервера и клиента одним из нескольких доступных методов
  • наличием дополнительных функций протокола, направленных на предупреждение различных хакерских атак

Аутентификация сервера дает защиту от:

  • взлома путем подмены IP-адресов (IP-spoofing), когда один удаленный хост посылает пакеты от имени другого удаленного хоста
  • подмены DNS-записей (DNS-spoofing), когда подменяется запись на DNS-сервере, в результате чего соединение устанавливается с хостом, который указан в подмененной записи, вместо необходимого
  • перехвата открытых паролей и других данных, передаваемых в открытом виде через установленное соединение

На сегодняшний день существуют две версии протокола SSH (SSH-1 и SSH-2), причем вторая версия усовершенствована и расширена по сравнению с первой. Например, вторая версия устойчива к атакам вида MITM («человек посередине», атака посредника). Также существуют две редакции данного протокола: открытая версия (бесплатная) и коммерческая (платная). Бесплатная версия - OpenSSH - встроена во все UNIX-подобные операционные системы в виде стандартных утилит SSH-клиента и SSH-сервера.

Коммерческая реализация SSH-протокола - SSH Communications Security - разработана одноименной организацией. Имеет небольшие отличия от бесплатной версии, такие как доступность коммерческой технической поддержки, наличие инструментов веб-управления и др. Основной набор команд и возможностей практически одинаковый у обоих продуктов.

Для ОС Windows выпущены различные SSH-клиенты и оболочки, самые распространенные из них - это бесплатные PuTTY и WinSCP . Для других операционных систем также существуют свои SSH-клиенты.

Что такое SFTP-протокол

SFTP-протокол (от англ. SSH File Transfer Protocol ) – сетевой протокол прикладного уровня, предназначенный для передачи файлов и других действий с ними через имеющееся надежное соединение. Протокол был разработан как расширение SSH-2, предназначенное для операций с файлами по защищенному каналу, однако может работать и с другими протоколами, обеспечивающими безопасное соединение сервера с клиентом. Иными словами, для надежной работы через SFTP-протокол необходимо иметь установленное защищенное соединение (например, SSH), которое проводит аутентификацию клиента и сервера и устанавливает факт их надежности, поскольку сам SFTP-протокол не проводит аутентификацию и не обеспечивает безопасность.

SFTP имеет ряд преимуществ перед своими предшественниками - FTP и SCP - таких, как прерывание передачи файла, удаление, возобновление передачи, связь переданных файлов с основными атрибутами, например, меткой даты/времени, а также более высокая платформонезависимость.

SFTP-протокол реализуется через SFTP-сервер и SFTP-клиент, которые являются подсистемами OpenSSH.

Для чего используются SSH и SFTP протоколы

Чаще всего протоколы SSH и SFTP используются для удаленной работы с операционной системой или переноса большого количества файлов.

Например, клиент берет в аренду сервер или какую-то часть серверного пространства. Возникает необходимость переносить туда уже имеющиеся данные клиента, например, сайт или почтовые файлы. Провайдер должен обеспечить надежность и быстроту обмена данными с его сервером, особенно если речь идет о больших объемах информации и ее высокой конфиденциальности. В этом случае на удаленной машине (в данном случае - виртуальном сервере) устанавливается SSH-сервер (со встроенным SFTP-протоколом), а на клиентском компьютере - SSH-клиент. Создается SSH-туннель, и обмен данными между клиентом и удаленным сервером осуществляется через надежное соединение со всеми преимуществами протокола, описанными выше.

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

Как работает SSH

По протоколу SSH работает набор программ, служащих для выполнения различных действий на удаленной операционной системе. Например, программа sshd обеспечивает серверную функциональность SSH, она должна быть запущена на SSH-сервере. Программа ssh запускается на SSH-клиенте и позволяет устанавливать соединение с удаленным хостом, регистрироваться на нем, работать с удаленной машиной через SSH-соединение.

Для запуска тех или иных программ SSH-протокола существуют специальные команды с набором различных опций. Эти команды могут отличаться в зависимости от используемой клиентской операционной системы и оболочки SSH-клиента. Команды запускаются либо из командной строки, если речь идет о UNIX-подобных системах, либо посредством графического интерфейса в соответствующих SSH-оболочках.

Как подключиться по SSH

Если на вашем компьютере установлена ОС Windows, а на удаленной машине UNIX-подобная система (например, Linux), то для установки SSH-соединения можно использовать PuTTY . Это бесплатная программа под Windows состоит из одного запускаемого файла и не требует инсталляции.

Чтобы установить соединение при помощи PuTTY, необходимо проделать следующие действия.

Запустить PuTTY (putty.exe).


По умолчанию никаких дополнительных настроек проводить не нужно, можно убедиться, что указан 22-й порт и тип соединения Connection type - SSH. В поле Host Name (or IP address) нужно ввести имя удаленного компьютера или его IP-адрес и нажать кнопку Open .


Может появиться предупреждение системы безопасности PuTTY, однако если есть уверенность в том, что хост достоверен, то нужно нажать Да и продолжить соединение.


В появившейся командной строке нужно ввести имя пользователя, под которым будет выполняться вход на удаленный компьютер.


В следующей строке нужно ввести пароль для данного пользователя. При вводе пароля никакие символы в командной строке не отображаются, поэтому необходимо просто набрать пароль и нажать клавишу ввода (Enter). Если введены неправильные имя пользователя и пароль, то выведется ошибка « Access denied », в случае успешного подключения предоставляется командная строка удаленного компьютера.


Здравствуйте! Интересует вопрос: как подключиться по SSH к домашнему компьютеру через интернет. Дома установлен FreeSSHd сервер. Я так понимаю надо как-то открыть порт 22 на внешнем IP?Alex

Да, часто возникает необходимость . Я в той статье много о чём рассказывал, а здесь мы будем говорить исключительно об SSH, раз уж Alex любезно предоставил нам эту возможность. К тому же, мне самому безумно интересен SSH, а здесь ещё и на Windows… ммм.

Что такое SSH и зачем он нужен?

Дело в том, что SSH — это S ecure SH ell. Протокол для безопасного доступа к оболочке управления. Поэтому оно предоставляет доступ именно к командной строке, ибо Shell — переводится как оболочка и здесь в значении текстовая оболочка управления . Но вообще, этот протокол примечателен тем, что он позволяет пропускать внутри себя любой другой трафик, причем в зашифрованном виде. Так, протокол безопасного подключения к файловой системе называется SFTP и работает поверх SSH. Но может туннелировать абсолютно любые другие соединения — будь то HTTP или даже RDP. По сути получается «VPN на коленке».

Здесь Алекс уже сделал полдела, он установил и запустил на домашнем компьютере FreeSSHd. Это позволяет подключиться к Windows по SSH. В данном случае — «позволяет» — это сказано очень сильно. Потому как это решение работает на Виндовс кое-как. Во-первых, у неё нет приличного текстового интерфейса — командной строки, для управления.

По крайней мере штатный — cmd — мало что позволяет сделать с удалённой машиной. Есть ещё Powershell — это уже более современное и мощное решение. Freesshd позволяет сменить консоль на powershell, но я к ней так и не смог подключиться. К CMD подключился — но это совершенно неюзабельно:

Во-вторых, в случае с FreeSSHd у меня не получилось подключиться к компьютеру с Windows даже по локальной сети, не говоря уже о подключении через интернет. Вернее, подключиться получается, но сервис зависает и вылетает, управлять Windows-хостом таким образом не получится.

Поэтому, я предполагаю, что Алексу понадобился ssh-сервер на Windows для подключения к файловой системе или использования её в качестве VPN, проксирования чего-либо поверх SSH. Хотя я и сомневаюсь, что FreeSSHd позволит это делать. Ибо в-третьих: он даже не сохраняет настройки, при перезапуске сервиса всё сбивается. В общем, я очень надеюсь, что Алекс расскажет нам в комментариях о том, зачем это ему понадобилось.

Как ещё можно запустить SSH на Windows?

Есть более работоспособное решение — Powershelserver . Хотя в нём тоже есть баги, но оно хотя бы не вылетает. Поэтому я бы рекомендовал использовать именно его для подключения по SSH к виндовым серверам.

Во-первых, он стабильно работает без вылетов. И через него действительно можно управлять windows через powershell.

Все настройки нормально сохраняются. Доступны те же функции что и в FreeSSHd и даже больше — можно использовать SCP — это копирование файлов поверх SSH.

Но самый шик — это консоль! Она работает, господа!

Я легко подключился, без всяких плясок с добавлением пользователей (это нужно делать во freesshd). И та простейшая команда на просмотр таблицы маршрутизации прекрасно отработала и выдала нужную инфу. Фриссш у меня «упал» именно при попытке просмотра netstat -rn

Здесь правда видно что не отображаются русские символы. Так у нас это легко настроить, просто выставляю нужную мне кодировку на powershellserver, перезапускаю, переподключаюсь…

Настройка кодировки в Powershellserver

Теперь мы имеем полноценный SSH и можем полностью управлять Windows через консоль.

Microsoft создаст собственное решение для SSH

Кстати, Microsoft eщё летом объявила о том, что собирается разработать нативную поддержку SSH для Powershell в новых версиях Windows. Есть анонсы новости на хабре и на pcweek (и ещё). Поэтому нам только остаётся ждать с нетерпением этого знакового события, поскольку это действительно будет прорывом для работы в гетерогенных сетях .

Я не стал проверять остальные функции — sftp и scp, но почему-то уверен, что они тоже будут прекрасно работать.

Как открыть снаружи SSH-порт?

Итак, мы подобрались к тому сокровенному, ради чего вообще и затеялась эта статья. Ответу на вопрос читателя.

Проброс порта на роутере или модеме

Для подключения к компьютеру извне, действительно нужно сделать NAT, или, в частном случае . Как это сделать зависит от устройства, которое используется в качестве шлюза. Это может быть ADSL-модем или . В большинстве случаев подробные инструкции для вашего девайса легко найти по запросам типа «проброс порта модель_устройства » или «port forwarding модель_устройства »

Вот так это выглядит на моем домашнем роутере Zyxel Keenetic Lite:

А вот так это выглядит на ADSL-модеме c функционалом роутера Linksys WAG200G, оказавшимся под рукой:

Кроме того, у некоторых провайдеров это может быть невозможно сделать технически, поскольку они не предоставляют «белый» .

Проброс порта на удалённый сервер с помощью SSH-туннеля

В таком случае, для подключения по SSH может быть доступен единственный способ — с локальной Windows-машины (той самой, к которой хотим подключиться по SSH) на удалённый сервер. В этом случае у вас должен быть SSH-доступ к какому-то серверу в интернете.

Настройка «обратного» туннеля SSH

Такой проброс легко сделать с помощью простого SSH-клиента Putty (есть и ) Затем можно будет подключиться на этом самом удалённом сервере через проброшенный порт.

Здесь получилась по сути петля. Мы открываем SSH сессию с Windows на удалённый сервер, а внутри этого подключения у нас туннелируется SSH-порт самой Windows Powershellserver (или FreeSSHd) на локальный порт 3322 удалённого сервера. И в этой же сессии мы теперь подключаемся обратно к Windows на Powershell через этот самый порт 3322… Я надеюсь, вы не запутались. Но… This is magic, друзья! :) SSH-туннели это особый мир, с их помощью можно вытворять невероятные штуки, открывать такие двери, что все безопасники будут горько плакать, если бы они вдруг узнали обо всём этом… Ну да ладно .

Ну если вам нужно расшарить SSH-порт винды в мир, достаточно в настройках обратного туннеля в качестве destination указать не localhost:3322, а ip_server:3322. Сможете подключаться к винде по SSH отовсюду, где есть доступ к этому самому серверу.

Как проверить правильно ли проброшен порт?

Очень просто. Нужно проверить открыт ли он. В случае с SSH открытый порт будет отвечать сообщением о своей версии. Самый простейший способ проверки порта — утилита telnet.

Просто наберите в командной строке через пробел:

telnet домен_или_IP порт

Если порт доступен, то вы увидите что-то вроде такого:

Ответ SSH если порт доступен

Если порт по каким-то причинам недоступен — то вы увидите либо «connection refused» либо «connection timeout». В первом случае это будет мгновенно, и означает что порт закрыт файрволом.

Во втором случае это будет похоже на «зависание» и может длиться до нескольких минут — телнет-клиент будет пытаться установить соединение. Это может означать также блокировку файрволлом, но уже другого типа. Либо просто что указанный хост недоступен или порт на нём закрыт.

Если вы смогли подключиться телнетом, то нажмите комбинацию клавиш Ctrl+] и введите quit, затем Enter. Иначе не получится прервать сессию и придётся открывать новое окно консоли, если она вам ещё нужна.

Вы приобрели свой первый VPS, а может даже сразу сервер. Наверняка у вас есть веб панель для его администрирования. Но тру админы, всегда ходят через консоль 😉 Поэтому надо научиться это делать. В этом уроке мы установим программу PuTTY, подключимся к серверу по SSH протоколу, и научимся определять занятое и свободное пространство на сервере.

Программа Putty для соединения с сервером по SSH протоколу

Скачиваем Putty с сайта putty.org Для себя я скачиваю версию «For Windows on Intel x86 — PuTTY: putty.exe»

Распаковываем архив, запускаем программу.

Вот так выглядит окно программы после запуска. Я уже ввел IP адрес своего сервера в поле «Host Name (or IP address)»:

Вводим домен или IP адрес своего сервера и нажимаем кнопку «Open». Открывается окно командной строки. Оно запрашивает у нас логин и пароль пользователя. Вначале вводим логин, затем, пароль. Внимание, во время вода пароля — символы на экране не печатаются, не печатаются даже звездочки ***. Поэтому пароль вводим как бы вслепую. Вводим и нажимаем Enter. Если пароль ввели верно, то происходит вход в консоль управления сервером. Выводится строка с временем последнего входа, и информация о операционной системе.

Команды в консоли

pwd

df

Команда df показывает размер свободного и занятого пространства на сервере, во всех смонтированных файловых системах

du

Команда du показывает сколько места занимает папка или файл.
Пример команды:

Du -h /home/

Эта команда покажет сколько места занимает директория /home/

На этом все. Первое знакомство с подключением к серверу по SSH и программой putty закончено. Используя эту информацию можно зайти на сервер, и посмотреть сколько места занимают данные на нем.

PuTTy - это популярный SSH- и Telnet -клиент (Telnet - тот же SSH , только без шифрованной передачи данных (пакетов)), т.е. программа для безопасного подключения к удаленному компьютеру (или к серверу) и выполнения на нем различных команд. PuTTY ведет логи, позволяет настраивать шрифты, цвета и разрешение консоли, допускает сохранение в своей памяти ключей авторизации, поддерживает работу через прокси-сервер. При этом утилита является бесплатной в распространении.

Для того, чтобы начать работу с PuTTy , скачайте её с официального сайта или с нашего сайта . Документацию по программе Вы можете найти (только на англ.), FAQ по ней .

Перед тем, как начать работу с вашим аккаунтом по SSH , Вам необходимо включить SSH у себя на главной странице в , в разделе Тех. информация . Также там можно узнать имя сервера для подключения.

Для начала работы запустите файл putty.exe . Перед Вами появится окно, представленное на рисунке ниже.

В поле Host Name or IP address) вводите имя сервера или его ip, которые Вы узнали в разделе "Тех. информация "(например, robin.сайт или pixel.сайт ). Порт оставляйте по умолчанию 22. В поле Saved Sessions введите любое имя сессии (коннекта), например my_session , и нажмите Save . После этого нажмите Open и Вы увидите такое окно.

В поле login as введите имя Вашего пользователя (совпадает с логином аккаунта для доступа в ПУА), нажмите Enter . После чего появится надпись Password . Вводите Ваш пароль для доступа по SSH (также совпадает с паролем от ПУА). Не пугайтесь - во время ввода пароля на экране ничего не отображается (ни звёздочек, ни чего-либо подобного). После того, как Вы закончили вводить пароль, нажмите Enter .
Если логин и пароль введены верно, то произойдёт подключение к серверу и Вы попадете в командную оболочку Linux .

Также заметим, что сочетание Ctrl+V и Ctrl+C в PuTTy не работают. В буфер обмена копируётся всё, что выделено с помощью мыши, а вставка осуществляется либо правой кнопкой мыши, либо сочетанием клавиш SHIFT+INSERT .

Полезные команды

Рассказать о всех командах Unix будет сложно, поэтому напишем лишь несколько полезных команд:

man [имя команды] - выдаст подробную информацию по команде, например: man mv
Для выхода из man, т.е. из руководства по команде, нажмите q (Q uit - Выход).
[имя команды] --help - также позволит посмотреть описание команды.

ls - вывести список файлов;
ls -la - покажет все файлы (включая скрытые), размер файлов, владельца и группу владельца, права на них, дату последнего изменения;
ls -lha - то же, что предыдущая команда, только размер файлов будет показан в удобном виде;
ls -lha | less - позволит просматривать файлы постранично (если их много);

cd [имя директории] - переход в выбранную директорию;
cd ../ - переход на директорию выше;
cd ~ - переход в корневую директорию;

mv - переименовать и/или переместить;

rm - удалить;

cp - копировать;

> - очистка файла. Например, можно применить к файлам логов (> access.log, > error.log, > combined.log);

mc - запуск Midnight Commander - что-то вроде Norton Commander, в котором удобно работать с файлами, а также возможно работать с ними по sftp (ftp внутри ssh);

chmod - установка прав на файл или директорию;

cat -объединяет файл или несколько файлов, либо ввод со стандартного устройства ввода и выводит результат на стандартное устройство вывода;
cat [имя файла] - выведет на экран содержимое файла;
cat [имя файла] | grep [искомая строка] - выведет на экран строки файла, включающие искомую строку;

mkdir [имя директории] - создание директории (папки);

SSH (англ. Secure Shell - «безопасная оболочка») - сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.

SFTP (англ. SSH File Transfer Protocol) - протокол прикладного уровня, предназначенный для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Протокол разработан группой IETF как расширение к SSH-2, однако SFTP допускает реализацию и с использованием иных протоколов сеансового уровня.

Где взять данные для подключения к серверу по ssh / sftp?

Эти и другие данные вам присылаются в письме после создания и установки сервера . Найдите в письме такую часть (данные будут другие, это пример)

>> Данные для доступа к серверу (SSH)

IP Адрес: 91.215.152.7
Логин: root
Пароль: 1QyeB49TrR
Порт: 3333

именно эти данные необходимо использовать для подключения по ssh и sftp.

Подключение по ssh / sftp из Windows

Для подключения по ssh с помощью putty выполните следующие шаги:

Шаг 1 . Скачайте и запустите putty (putty.exe)

Шаг 2 . Введите ip сервера и выберите протокол ssh. Не забудьте указать правильный порт (обычно это или 3333, или 22).

Шаг 3 . При первом входе принимаем сертификат

Шаг 4 . Вводим логин и пароль

Примечание

Полезные советы по работе с putty :

1. Для копирования текста из консоли PuTTY нужно просто выделить текст - он автоматически скопируется в буфер обмена. Для вставки текста в консоль используется сочетание клавиш Shift+Insert, либо можно просто нажать в консоли правой кнопкой мыши.
2. Прервать исполнение текущей команды - Ctrl+C
3. Очистить экран - Ctrl+L
4. Завершить сессию Ctrl+D или exit в командной строке.

Подключение по ssh / sftp из Linux или Mac OS

Если вы используете Mac OS или Linux, то для подключения к серверу по протоколу ssh можете использовать стандартное приложение "Терминал" (terminal). Для подключения используйте команду (ip будет другой)

Ssh

Процесс подключения выглядит так

Ssh The authenticity of host "91.215.152.7 (91.215.152.7)" can"t be established. RSA key fingerprint is bb:8c:b7:44:14:c6:c1:17:36:c7:ce:ba:08:40:00:c0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added "91.215.152.7" (RSA) to the list of known hosts. "s password: [ ~]#

Примечание : При вводе пароля вы не видите введённых символов. Из-за этого многим кажется, что ничего не происходит. Однако это не так.

Подключение по sftp с помощью FileZilla

Для подключения по sftp рекомендуем использовать FileZilla. Процесс подключения по sftp мало чем отличается от процесса подключения по ftp, кроме одного момента - необходимо принудительно указать порт по которому идёт подключение, по умолчанию это 3333-й порт, но может быть и 22-й, а также протокол sftp:// перед IP-адресом в строке подключения. Также убедитесь, что пользователю, под которым выполняется вход, разрешён доступ по SSH.

после подключения нужно будет принять сертификат