Подключение по ssh. Подключение к виртуальному серверу по SSH и SFTP Ssh соединение linux


Хостинг с ssh доступом встречается наверное не так часто, по крайней мере, по моему опыту. Мой последний хостинг SSH поддерживает , и я решил испробовать его в деле, к тому же у меня для этого был веский повод. Дело в том, что мой текущий хостинг не показывает детально размер файлов.

Через FTP клиент это тоже не посмотреть, а мне это очень необходимо, так как место на хостинге быстро закончилось и мне нужно удалить весь мусор, чтобы не покупать дополнительные мегабайты и не платить лишнее.

А ещё недавно мои сайты заразили и я и без ssh доступа это было бы невозможно.

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

Что такое хостинг с ssh доступом?

Но сначала скажу о том, что такое SSH, так как возможно не все знают, что это за зверь.

Как подключиться по SSH? Windows/Linux, sFTP, ключи

А если коротко, то согласно Википедии это:

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

Как пользоваться SSH в Linux?

С ssh можно работать прямо через терминал при помощи команд Linux. Подключиться к серверу очень легко, нужно набрать команду в таком формате:

Ssh имя_пользователя@адрес_сервера

Как видите, всё очень просто. Попробую подключиться через ssh к своему хостингу. Но не тут то было, хостинг упорно не хотел меня принимать по этому протоколу. Я написал в службу поддержки и теперь жду ответа.

Ну а пока я вам расскажу, как удобно можно подключиться по ssh через файловый менеджер Nautilus. Подключившись к нему по SSH вы будете работать с файлами, которые лежат на хостинге, как будто они лежат на вашем компьютере. Открываем Nautilus и нажимаем Ctrl + L, чтобы в адресной строке можно было написать путь к серверу ssh:

Sftp://[email protected]

Потом вас попросят ввести пароль и вы увидите в файловом менеджере все свои файлы. Вот такие преимущества есть у хостинга с ssh.

Как пользоваться SSH в Windows?

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

Как ей пользоваться объяснять не буду, в интернете полно статей про эту программу, так как она самая популярная. В MAC OS программы отдельные не нужны, там как и в Линуксе есть терминал, через который можно сразу подключиться в серверу через SHH. ВЫБИРАЙТЕ ПРАВИЛЬНУЮ ОСЬ!

Выбирая хостинг обращайте внимание на наличие возможности подключиться через SSH. Мой хостинг IHOR дает доступ к SSH и поэтому я пользуюсь им уже несколько лет...


Не нашли ответ? Воспользуйтесь поиском по сайту

Здравствуйте! Интересует вопрос: как подключиться по 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. Иначе не получится прервать сессию и придётся открывать новое окно консоли, если она вам ещё нужна.

SSH (Secure Shell) — это сетевой протокол, предназначенный для удалённого управления сервером и передачи данных по зашифрованным TCP соединениям. Большинство хостингов , даже виртуальных, сегодня предоставляет доступ как по FTP, так и по SSH. На мой взгляд, это здорово, SSH намного удобнее и безопаснее в использовании.

Настройка SSH

Настройка будет происходить под выделенный сервер, VDS, VPS на Debian, Ubuntu. Конфигурационный файл располагается тут: /etc/ssh/sshd_config .
Если у вас обычный хостинг, всё и так должно быть настроено как надо, переходите к разделу .

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

В результате внесения неправильных изменений в конфигурационный файл вы можете потерять доступ к серверу по ssh, поэтому убедитесь, что у вас есть альтернативные варианты для доступа к нему, например, с помощью панели управления ISPManager.

Как ограничить доступ по SSH

Все изменения вносятся в /etc/ssh/sshd_config
Чтобы изменения вступили в силу, необходимо

Сменить порт

Port 9724

Теперь при авторизации вам нужно вместо стандартного 22 порта указывать 9724 .
Способ очень простой и действенный против большинства простых ботов хакеров, которые стучатся в стандартные порты. Тут главное не создать конфликт с другими службами и подобрать заведомо неиспользуемое число.

Запретить связь по старому протоколу

Здесь мы определяем, что связь возможна только по протоколу v2

Если вы авторизованы не под root , перед всеми консольными командами нужно добавлять sudo — расшифровывается как Substitute User and DO — подмени юзера и делай (под ним). Например, позволяет исполнять команды от имени суперпользователя root .

Уменьшить число попыток авторизации

MaxAuthTries 2

Количество попыток ввода пароля. По умолчанию 6. При неудачном переборе сеанс связи обрывается.

Уменьшить время ожидания авторизации

LoginGraceTime 30s

По умолчанию, 120 секунд может длиться сеанс авторизации. По истечению этого времени он обрывается. 2 минуты на авторизацию — это перебор, всё это время сервер держит связь открытой, что очень нерационально. Полминуты за глаза хватит.

Закрыть доступ по IP

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

Если доступ нужен только вам, самым простым и надёжным будет закрыть доступ отовсюду, кроме вашего IP или, если он динамический, то диапазона IP.

  1. Открываем /etc/hosts.allow и добавляем туда SSHD: 192.168.1.1

    где 192.168.1.1 — ваш IP. Если у вас динамический IP, определите IP с маской подсети и запишите Вашу подсеть вместо IP, например:

    SSHD: 192.168.0.0/16

  2. Открываем /etc/hosts.deny и добавляем туда: SSHD: ALL

Ещё один способ ограничения доступа по IP

Можно воспользоваться следующей директивой:

AllowUsers = *@1.2.3.4

Здесь мы разрешаем доступ только для IP 1.2.3.4

Авторизация SSH по ключам

Намного безопаснее, удобнее и правильнее будет настроить ssh авторизацию без пароля. Для этого будет использоваться авторизация по ключу.

Итак, вот инструкция.

С помощью защищенного протокола 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 к серверу под управлением Linux. Что такое SSH (Secure Shell) ? Говоря простым языком – безопасный протокол передачи данных. Что нужно что бы подключиться через SSH ?

  • IP адрес сервера,
  • Логин,
  • Пароль,
  • SSH клиент.

С первыми тремя пунктами, думаю, вопросов не возникнет. Что такое SSH клиент? Это программа с помощью, которой мы подключаемся к серверу. Наиболее популярный SSH клиент это PuTTY. Скачать программу можно с официального сайта разработчика https://www.putty.org/ PuTTY устанавливается в два клика.

Как подключиться через PuTTY по SSH

Программа довольно простая. Вводим IP адрес нашего сервера и нажимаем Соединиться. После соединения вводим логин и пароль. При этом логин будет отображаться, а пароль нет. Подтверждаем ввод пароля клавишей Enter и попадаем на наш сервер. Итак, мы подключились к нашему серверу с помощью PuTTY через SSH.

Как подключиться к MySQL через SSH

Для консольного подключение к MySQL выполняем действия описанные выше, после чего вводим команду.