Этот документ поможет Вам выполнить подключение к Вашему виртуальному серверу по протоколам SSH и SFTP.
SSH (англ. Secure SHell - «безопасная оболочка») - сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли.
SFTP (англ. SSH File Transfer Protocol) - протокол прикладного уровня, предназначенный для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Существует заблуждение, что SFTP это просто обычный FTP, работающий поверх SSH. В действительности SFTP - это новый протокол, разработанный с нуля.
Данные для подключения к виртуальному серверу
Все данные, необходимые для подключения к Вашему виртуальному серверу по SSH, Вы можете получить на главной странице панели управления .
Нам необходимо знать IP адрес виртуального сервера (1) и пароль для пользователя root (2).
Получив необходимые данные для подключения, можно приступать непосредственно к процессу.
Подключение к виртуальному серверу по SSH из Mac OS X или Linux
Пользователи операционных систем Mac OS X или Linux могут использовать стандартное приложение terminal для подключения к виртуальному серверу по SSH протоколу. Для подключения к Вашему виртуальному серверу используйте следующую команду (измените 188.127.236.62 на IP адрес вашего виртуального сервера):
Так выглядит процесс подключения к виртуальному серверу в терминале Unix или Mac OS X:
Ssh [email protected] The authenticity of host "188.127.236.62 (188.127.236.62)" can"t be established. RSA key fingerprint is 4f:e8:84:42:51:80:48:70:45:6c:69:47:79:e7:c0:56. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added "188.127.236.62" (RSA) to the list of known hosts. [email protected]"s password: #
Подключение к виртуальному серверу по SSH из Windows
Пользователи операционной системы Windows могут использовать для соединения с виртуальным сервером по протоколу SSH программу PuTTY. PuTTY - очень популярный telnet/ssh клиент, распространяется бесплатно.
Официальный сайт программы - http://www.chiark.greenend.org.uk/~sgtatham/putty/ Русскоязычный сайт поддержки - http://putty.org.ru/
После запуска программы вы увидите следущее окно:
Введите в поле “Host Name (or IP address)” IP-адрес Вашего виртуального сервера (на примере вводится helios.asu). Убедитесь, чтобы в пункте “Protocol” была выбрана радио-кнорка “SSH”.
Также, для того, чтобы каждый раз не вводить адресс и тип протокола вы можете сохранить сессию. Для этого введите ее название в поле “Saved Sessions” и нажмите кнопку “Save”.
После этого ваша сессия появится ниже в списке. Для того чтобы загрузить сохраненную сессию нужно выбрать ее из списка и нажать кнопку “Load”.
Для подключения нажмите кнопку “Open” внизу формы. Может появиться следующее сообщение:
Если вы уверены в том, что подключаетесь к нужному хосту, то нажмите кнопку “Yes/Да”. Появится следующее:
Введите свой логин (root), затем пароль. Перед вами консоль системы:
Для выхода введите:
Подключение к виртуальному серверу по SFTP
По умолчанию вам не нужно настраивать FileZilla, мы просто сразу начнём работать с программой.
Для того, чтобы подключиться к SFTP-серверу, введите IP-адрес вашего виртуального сервера в поле быстрого подключения (вместо example.com, как показано на рисунке ниже введите sftp://ip_адрес_вашего_vps). Введите порт подключения в соответствующее поле, для SFTP - 22. Введите имя пользователя и пароль, в соответствующие поля. Нажмите на кнопку “Быстрое соединение” или нажмите Enter для подключения.
Отметим, что панель быстрого подключения, как ясно из названия, приспособлена для быстрых подключений, т.е. у вас нет возможности редактировать список из 10-ти последних подключений. Для сохранения параметров подключения используйте Менеджер Сайтов.
Используйте Менеджер сайтов FileZilla для задания определённых параметров сайта и подключения к нужному SFTP-серверу. В Менеджере сайтов у вас есть возможность сохранять свои подключения и настраивать большее число параметров, чем доступно в панели быстрого подключения.
После подключения, в правой стороне главного окна будет отображён список файлов и директорий. Текущая директория будет показана в редактируемом поле в верхней части. Ниже отображается удалённое дерево директорий, а ещё ниже - содержимое текущей удалённой директории. Перейти в другую директорию можно тремя разными путями. Первый: сделайте двойной щелчок на директории в списке. Второй: кликните на директории в дереве. Последний способ: введите имя директории в редактируемое поле и нажмите Enter. Обратите внимание на директорию “..”, присутствующую практически во всех остальных директориях. Эта ссылка позволяет вам перейти к родительскому каталогу текущей директории.
Навигация на вашем компьютере работает почти так же, как и на сервере. Текущая локальная директория и дерево каталогов по умолчанию отображаются на левой стороне главного окна.
Подробную документацию по работе с FileZilla, Вы можете найти на официальном сайте по адресу http://filezilla.ru/documentation/Using
Условия использования документа
Материал представленный на данной странице может быть использован Вами по своему усмотрению. Разрешается копирование и распространение предоставленного материала без изменения содержания и без предварительного уведомления администрации Clodo.ru .
Мы будем признательны Вам за сообщения об ошибках в представленной документации и за предложения об улучшении документации. По этим вопросам необходимо обращаться по адресу [email protected] . При обращении не забывайте указывать URL-адрес публикации.
Здравствуйте! Интересует вопрос: как подключиться по 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-порт винды в мир, достаточно в настройках обратного туннеля в качестве destination указать не localhost:3322, а ip_server:3322. Сможете подключаться к винде по SSH отовсюду, где есть доступ к этому самому серверу.
Как проверить правильно ли проброшен порт?
Очень просто. Нужно проверить открыт ли он. В случае с SSH открытый порт будет отвечать сообщением о своей версии. Самый простейший способ проверки порта — утилита telnet.
Просто наберите в командной строке через пробел:
telnet домен_или_IP порт
Если порт доступен, то вы увидите что-то вроде такого:
Ответ SSH если порт доступен
Если порт по каким-то причинам недоступен — то вы увидите либо «connection refused» либо «connection timeout». В первом случае это будет мгновенно, и означает что порт закрыт файрволом.
Во втором случае это будет похоже на «зависание» и может длиться до нескольких минут — телнет-клиент будет пытаться установить соединение. Это может означать также блокировку файрволлом, но уже другого типа. Либо просто что указанный хост недоступен или порт на нём закрыт.
Если вы смогли подключиться телнетом, то нажмите комбинацию клавиш Ctrl+] и введите quit, затем Enter. Иначе не получится прервать сессию и придётся открывать новое окно консоли, если она вам ещё нужна.
Протокол SSH предназначен для защиты соединения через интернет между администратором и удаленным сервером.
SSH-протокол – что это?
SSH (Secure Shell - защищенная оболочка, англ.) – шифрующий протокол прикладного сетевого уровня, который обеспечивает защищенное удаленное соединение с операционной системой при работе через небезопасную сеть, такую как интернет.
Для того, чтобы надежно передавать данные через интернет от клиента на сервер, необходим безопасный канал связи, гарантирующий целостность, достоверность и секретность передаваемой информации. Именно такой канал связи и обеспечивает протокол SSH.
На удаленном сервере устанавливается SSH-сервер, а на компьютере, с которого устанавливается подключение к серверу, - SSH-клиент. Оба – и клиент, и сервер – должны быть запущены во время работы по SSH.
Используя защищенный канал связи через SSH, вы можете свободно передавать по нему любые данные, использовать командную строку, запускать приложения на сервере - все действия будут безопасны. Протокол SSH сжимает всю исходящую информацию, шифрует ее и только потом передает на сервер или обратно.
Только по SSH каналу вы можете запускать программы Unix-подобных серверов в графическом виде, как в Windows, - это делается с использованием механизма X11 Forwarding.
Почему безопасен SSH?
Данные, которые передаются по SSH-каналу, шифруются специальными алгоритмами и только потом передаются. Если злоумышленнику удастся перехватить какую-то информацию в процессе передачи от клиента к серверу, то он не сможет ее расшифровать.
Перед установкой соединения SSH-клиент аутентифицирует сервер (проверяет его подлинность), а затем SSH-сервер аутентифицирует клиента. Есть несколько алгоритмов аутентификации (при помощи паролей, ключей и др.), все они одинаково надежны.
Еще один фактор, обеспечивающий безопасность соединения по SSH - работа алгоритмов по предупреждению хакерских атак.
Благодаря всем этим действиям SSH-канал защищен от основных видов взлома, таких как IP- и DNS-spoofing, при которых подменяется либо IP-адрес либо запись в DNS, и данные передаются на подмененный адрес либо доменное имя к злоумышленнику. Также использование SSH дает защиту от перехвата открытых данных через интернет.
Версии SSH-протокола
SSH-протокол имеет как бесплатную, так и платную (коммерческую) версии.
OpenSSH – бесплатный протокол, который предустановлен во всех операционных системах ядра Unix и существует как утилита, состоящая из SSH-клиента и SSH-сервера.
SSH Communications Security – коммерческая версия протокола. Ее отличия от OpenSSH невелики, основная функциональность идентична бесплатной версии. Добавлены инструменты для управления через веб, коммерческое тех. обслуживание и некоторые другие свойства.
В данный момент выпущены 2 версии SSH-протокола в хронологическом порядке (SSH-1 и SSH-2). Вторая версия более усовершенствована, она предупреждает атаки вида MITM .
SFTP-протокол
SFTP (SSH File Transfer Protocol – SSH-протокол передачи файлов, англ.) – сетевой протокол, расширение SSH-2 для безопасной работы с файлами на удаленном сервере через небезопасную сеть. Как и SSH-протокол он работает на прикладном сетевом уровне и состоит из двух частей SFTP-сервер и SFTP-клиент.
SFTP разработан таким образом, что сам не проводит аутентификацию и не обеспечивает защиту соединения, поэтому устанавливается “поверх” безопасного канала. Например, сначала совершается подключение к удаленному серверу по SSH, а затем начинается работа с файлами по SFTP. Можно использовать и другие криптографические протоколы, обеспечивающие надежность соединения, вместе с SFTP.
FTP- и SCP-протоколы – предшественники SFTP, по сути являются его устаревшими версиями. Они не содержат таких функций, как прерывание при передаче файла и возобновление, метки даты/времени для каждого файла и другие атрибуты.
OpenSSH включает в себя SFTP-сервер и SFTP-клиент.
Применение протоколов SSH и SFTP
SSH-протокол используется для безопасной удаленной работы с сервером, SFTP - для переноса и управления файлами через SSH-соединение.
Например, если вы арендовали виртуальный или выделенный сервер, то вам понадобится перенести туда свои данные (сайт, почту, изображения и т.д.). Чтобы избежать в процессе переноса перехвата данных или повреждения информации, а также для ускорения копирования файлов используйте SSH-протокол.
Установите на сервере SSH-сервер, на своем компьютере SSH-клиент, при необходимости запустите SFTP-сервер и SFTP-клиент и переносите данные по безопасному туннелю. Программа sshd запускается на сервере, пока она работает выполняется все необходимое для серверной функциональности SSH. Программа ssh работает на клиенте и осуществляет подключение к серверу, делает все необходимые проверки SSH-протокола.
Команды, которые запускают SSH-клиент, различны на разных операционных системах. UNIX-подобные ОС содержат набор команд для работы с SSH через командную строку, для Windows существуют графические оболочки (бесплатные клиентсткие оболочки PuTTY, WinSCP и др.).
Пример подключения по SSH
Допустим, на вашем компьютере установлена ОС Windows, а на удаленном сервере Linux. В данном случае мы рекомендуем использовать бесплатную оболочку PuTTY для установки соединения по SSH. Скачайте программу PuTTY, она состоит из одного.exe - файла и не требует установки.
Запустите
Обратите внимание на номер порта он должен иметь значение 22, и на тип соединения – выберите SSH.
Вам необходимо заполнить только поле Host Name (or IP address), где указать имя удаленного сервера или его IP-адрес (предпочтительно). Нажмите Open.
Предупреждение PuTTY Security Alert уведомляет о том, что нет гарантии, что вы подключаетесь к нужному хосту, поскольку его ключ не сохранен в памяти вашего компьютера. Нажмите “Да”, если уверены, что ввели правильный IP-адрес.
![](https://i1.wp.com/ispserver.ru/sites/default/files/alert.png)
При вводе пароля обратите внимание, что символы, которые вы вводите, никак не отображаются в командной строке. Просто введите пароль (без пробелов) и нажмите Enter.
В случае успешного подключения вы получите командную строку сервера.
![](https://i1.wp.com/ispserver.ru/sites/default/files/cmd.png)
Что такое и для чего нужен SSH
Безопасный шелл (SSH) - это сетевой протокол, обеспечивающий функции шелла на удалённой машине через безопасный канал. SSH несёт в себе различные улучшения безопасности, среди них аутентификация пользователя/хоста, шифрование данных и целостность данных, благодаря чему невозможны популярные атаки вроде подслушивания (eavesdropping), DNS/IP spoofing, подделка данных (data forgery), перехват соединения (connection hijacking) и т. д. Пользователям ftp, telnet или rlogin, которые используют протокол, передающий данные в виде открытого текста, крайне рекомендуется переключиться на SSH.
OpenSSH - это реализация с открытым исходным кодом протокола SSH, позволяющая шифровать соединение в сети посредством набора программ. Если вам хочется иметь SSH на Linux, вы можете установить OpenSSH, который состоит из сервера OpenSSH и клиентских пакетов.
OpenSSH серверные/клиентские пакеты поставляются со следующими утилитами:
- OpenSSH сервер: sshd (SSH daemon)
- OpenSSH клиент: scp (безопасное удалённое копирование), sftp (безопасная передача файлов), slogin/ssh (безопасный удалённый вход), ssh-add (дополнение закрытого ключа), ssh-agent (агент аутентификации), ssh-keygen (управление ключами аутентификации).
Если вы хотите установить сервер/клиент OpenSSH и настроить автоматический запуск сервера OpenSSH, следуйте следующим инструкциям, которые различаются в зависимости от дистрибутива.
Debian, Ubuntu или Linux Mint
$ sudo apt-get install openssh-server openssh-client
В системах основанных на Debian, сразу после установки, OpenSSH будет запускаться автоматически при загрузке. Если по каким либо причинам сервер OpenSSH не запускается автоматически при запуске системы, вы можете выполнить следущую команду для однозначного добавления ssh в загрузку при старте системы.
$ sudo update-rc.d ssh defaults
Fedora или CentOS/RHEL 7$ sudo yum -y install openssh-server openssh-clients $ sudo systemctl start sshd service $ sudo systemctl enable sshd.service
CentOS/RHEL 6$ sudo yum -y install openssh-server openssh-clients $ sudo service sshd start $ sudo chkconfig sshd on
Arch Linux$ sudo pacman -Sy openssh $ sudo systemctl start sshd service $ sudo systemctl enable sshd.service
Настройка сервера OpenSSHЕсли вы хотите настроить сервер OpenSSH, вы можете редактировать общесистемный файл конфигурации размещённый в /etc/ssh/sshd_config.
Есть пара опций OpenSSH, которые могут заинтересовать:
По умолчанию, sshd прослушивает порт 22 и ожидает входящие соединения ssh. Изменив порт по умолчанию для ssh, вы можете предотвратить различные автоматизированные атаки хакеров.
Если ваша машина имеет более чем один физический сетевой интерфейс, возможно вы заходите уточнить, какой из них связан с sshd, для этого вы можете использовать опцию ListenAddress. Эта опция помогает улучшить безопасность посредством ограничения входящих SSH только через особый интерфейс.
HostKey /etc/ssh/ssh_host_key
Оция HostKey определяет гда размещён персональный хост ключ.
PermitRootLogin no
Оция PermitRootLogin – может ли root входить в систему посредством ssh.
AllowUsers alice bob
Используя опцию AllowUsers вы можете выборочно отключить службу ssh для определённых пользователей Linux. Можно задать множество пользователей, разделяя их пробелами.
После того, как был изменён /etc/ssh/sshd_config , убедитесь, что перезапустили службу ssh.
Для перезапуска OpenSSH на Debian, Ubuntu или Linux Mint:
$ sudo /etc/init.d/ssh restart
Для перезапуска OpenSSH на Fedora, CentOS/RHEL 7 или Arch Linux:$ sudo systemctl restart sshd.service
Для перезапуска OpenSSH на CentOS/RHEL 6:$ sudo service sshd restart
Как подключиться к SSHПодключение к SSH из Linux
Пользователям Linux не нужно устанавливать дополнительных программ.
Подключение к SSH из Windows
Скрыто от гостей
.Cygwin – это не просто клиент SSH. Это мощный комбайн, в котором поддерживаются многие команды Linux. Например, в Cygwin очень легко создавать SSL-сертификаты (точно также, как и в Linux). В Windows для создания самоподписанных сертификатов нужно поплясать с бубном. В Cygwin очень удобно пользоваться cURL (не нужно ничего устанавливать отдельно) и т. д. Те, кому не хватает на Windows командной строки и программ Linux, в лице Cygwin найдут себе отдушину.
Установка Cygwin проста. Переходим на
Скрыто от гостей
И скачиваем
Скрыто от гостей
Скрыто от гостей
Скачается крошечный файл - это установщик. Установщик графический. Хоть он и содержит большое количество опций, все они довольно простые и многие знакомы по другим графическим установщикам. Если что-то непонятно, просто нажимайте «Далее». Пожалуй, только следующее окно может привести в замешательство:
Здесь представленные все доступные для установки элементы. Нам не нужно прямо сейчас разбираться в них. Поскольку самые востребованные уже помечены для установки. А если чего-то в будущем будет не хватать, то легко можно доустановить нужное.
Соединение SSH (общее для Linux и Windows)
Пользователи Linux открывают консоль, пользователи Windows печатают в Cygwin.
SSH нужна следующая информация для подключения:
- IP или имя хоста
- номер порта
- имя пользователя
- пароль пользователя
Ssh 192.168.1.36
Я вижу следующее
Alex@MiAl-PC ~ $ ssh 192.168.1.36 The authenticity of host "192.168.1.36 (192.168.1.36)" can"t be established. ECDSA key fingerprint is SHA256:sIxZeSuiivoEQ00RXAQHxylxuEA8SC5r/YPhL8wfp8s. Are you sure you want to continue connecting (yes/no)?
Поскольку я подключаюсь к хосту первый раз, то это незнакомый хост. У меня спрашивают, хочу ли я продолжить. Я набираю yes
:
Warning: Permanently added "192.168.1.36" (ECDSA) to the list of known hosts. [email protected]"s password:
Хорошо, хост 192.168.1.36 добавлен в список знакомых хостов. У меня запрашивается пароль для пользователя Alex. Поскольку на сервере с SSH нет такого пользователя, но я нажимаю Ctrl+C
(для разрыва) и ввожу команду вместе с именем пользователя удалённой системы. Пользователь вводится перед адресом удалённой машины и отделяется от адреса символом @. Символ @ на английском читается как at и можно перевести как «в». Т.е. запись [email protected] можно истолковать как «пользователь mial в машине 192.168.1.36 ».
Приглашение Alex@MiAl-PC сменилось приглашением mial@mint . Это означает, что мы уже на удалённой машине, т. е. у нас уже произошло соединение. Если нужно указать порт (если он отличается от стандартного), то порт нужно указывать после ключа -p. Например так:
Ssh [email protected] -p 10456
После подключения нас встречает примерно такое приветствие:
Linux mint 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Jun 16 15:32:25 2015 from 192.168.1.35
Из него следует, что удалённая машина - это Linux Mint, с ядром 3.16, 64-битная версия. Также важная информация о времени последнего входа и IP адресе с которого произошло соединение. Если время и IP вам незнакомы, а вы являетесь единственным пользователем, то ваша система скомпрометирована и нужно принимать соответствующие меры.
Наберём несколько команд, чтобы убедиться где мы и кто мы: pwd, [B]uname -a и т. д.:
Чтобы закончить сессию (отключиться), наберите
Или нажмите Ctrl+D .
Вход в SSH без ввода пароля
Во-первых, это просто удобнее. Во-вторых, это безопаснее.
Во-первых, нам нужно создать rsa ключи. Если вы пользователь Linux, то у вас всё в порядке. Если вы пользователь Windows, но вы не послушали мой совет и выбрали PuTTY, то у вас проблема и думайте сами, как её решать. Если у вас Cygwin, то всё также в порядке.
Если вы успели залогиниться на удалённой системе, разлогинтесь. После этого наберите
Ssh-keygen -t rsa
У нас спрашивают имя файла, не нужно ничего вводить, будет использовано имя по умолчанию. Также спрашивается пароль. Я пароль не ввожу.
Теперь на удалённой машине нам нужно создать каталог.ssh. Про выполнение команда на удалённой машине ещё будет рассказано ниже. Пока просто копируете команду, не забывая поменять IP адрес и имя пользователя на свои:
Ssh [email protected] mkdir .ssh
Теперь нам нужно скопировать содержимое файла id_rsa.pub на удалённую машину. Сделать это очень просто (не забываем менять данные на свои):
Cat .ssh/id_rsa.pub | ssh [email protected] "cat >> .ssh/authorized_keys"
Теперь просто логинимся и больше никакой пароль у нас не спрашивают. И так теперь будет всегда.
Выполнение команд на удалённом сервере без создания сессии шелла
Кроме открытия сессии шелла на удалённой системе, ssh также позволяет выполнять отдельные команды на удалённой системе. Например, для выполнения команды tree на удалённом хосте с именем remote-sys и отображением результатов на локальной системе, нужно сделать так:
Ssh remote-sys tree
Мой реальный пример:
Ssh [email protected] tree
Используя эту технику, можно делать интересные вещи, вроде такой, как выполнение команды ls на удалённой системе и перенаправление вывода в файл на локальной системе:
Ssh remote-sys "ls *" > dirlist.txt
Реальный пример:
Ssh [email protected] "ls *" > dirlist.txt cat dirlist.txt
Обратите внимание на одиночные кавычки в вышеприведённой команде. Это сделано потому, что мы не хотим, чтобы раскрытие пути было выполнено на локальной машине; поскольку нам нужно это выполнение на удалённой системе. Также если мы хотим стандартный вывод перенаправить в файл на удалённой машине, мы можем поместить оператор редиректа и имя файла внутри одиночных кавычек:
Ssh remote-sys "ls * > dirlist.txt"
Передача стандартного вывода с локальной машины на удалённую по sshНе менее интересный вариант выполнения команд приведён немного выше:
Cat .ssh/id_rsa.pub | ssh [email protected] "cat >> .ssh/authorized_keys"
- Команда cat построчно считывает и отображает содержимое файла.ssh/id_rsa.pub , расположенного на локальной машине.
- | (труба) передаёт то, что должно было бы появиться в стандартном выводе, другой команде.
- Вместо команды, которая должна была бы обрабатывать передаваемые ей строки, происходит соединение к удалённой системе (ssh [email protected]).
- На удалённую систему приходят строки, для которых предусмотрена команда cat >> .ssh/authorized_keys . Т.е. содержимое стандартного вывода построчно записывается в файл.ssh/authorized_keys, находящийся на удалённой машине.
Для следующего фокуса нужно два компьютера с системой Linux. К сожалению, даже Cygwin с этим трюком не справляется. Причём оба Linux"а должны быть с графическим пользовательским интерфейсом.
Туннелирование с SSH
Среди всего прочего, что происходит когда устанавливается соединение с удалённым хостом через SSH, это создание зашифрованного туннеля, который образуется между локальной и удалённой системами. Обычно, этот туннель используется для того, чтобы набранные на локальной машине команды безопасно были переданы удалённой машине, а результат, также безопасно, прислан обратно.
В добавок к этой базовой функции, протокол SSH позволяет переправлять большинство типов трафика по зашифрованному туннелю, создавая некого рода VPN (виртуальную частную сеть) между локальной и удалённой системами.
Пожалуй самая часто используемая из этих функций - это возможность транслировать трафик систем X Window. На системе с запущенным X сервером (это машины, которые имеют графический пользовательский интерфейс) возможно запустить программу X клиента (графическое приложение) на удалённой системе и видеть результаты её работы на локальной системе. Сделать это просто. Например, я хочу подключиться к удалённому хосту remote-sys и на нём я хочу запустить программу xload. При этом видеть графический вывод этой программы я смогу на локальном компьютере. Делается это так:
Ssh -X remote-sys xload
Реальный пример:
Ssh -X [email protected] gedit
Т.е. SSH запускается с ключом -X. А затем просто запускается программа. Посмотрите на скриншот.
Я нахожусь в Kali Linux. Я успешно логинюсь к удалённому компьютеру по SSH. После этого я запустил программу gedit. Этой программы, может быть, даже нет на Kali Linux, но она точно есть в Linux Mint, к которой я и подключился. Результат работы этой программы я могу видеть на экране так, будто бы программа запущена локально. Но, повторюсь, я хочу, чтобы вы это поняли, запущенной программы gedit на локальном компьютере нет. Если я захочу сохранить результат работы gedit (или любой другой программы, открытой таким образом), то окажется, что она работает в окружении удалённого компьютера, видит его файловую систему и т. д. Это удобно, когда вы хотите настроить удалённый компьютер используя графический интерфейс.
О том, как передать изображение со всего рабочего стола вы узнаете в этой же статье далее, в секции «Как настроить VNC через SSH».
На некоторых системах для этого «фокуса» нужно использовать опцию “ -Y ” вместо опции “ -X ”.
Копирование с/на удалённый компьютер (scp и sftp)
scp
Пакет OpenSSH также включает две программы, которые использует зашифрованный туннель SSH для копирования файлов по сети. Первая программа – scp
(«безопасное копирование») – используется чаще, как и схожая с ней программа cp для копирования файлов. Наиболее заметная разница в том, что источником файла может быть удалённый хост после которого следует двоеточие и расположение файла. Например, если мы хотим скопировать документ, названный document.txt из нашей домашней директории на удалённую систему remote-sys в текущей рабочей директории на нашей локальной системе мы можем сделать так:
Scp remote-sys:document.txt . document.txt 100% 177 0.2KB/s 00:00
Реальный пример:
# удалим файл на локальной машине, если он есть rm dirlist.txt # создадим файл на удалённой машине ssh [email protected] "ls * > dirlist.txt" # проверим его наличие ssh [email protected] "ls -l" # скопируем его на локальную машину scp [email protected]:dirlist.txt . # проверим его содержимое cat dirlist.txt
sftpДля копирования файла с B на A когда залогинены в B:
scp /path/to/file username@a:/path/to/destination
Копирование файла с B на A когда залогинены в A:
scp username@b:/path/to/file /path/to/destination
Вторая программа для копирования файлов через SSH - это sftp
. Как следует из её имени, она является безопасным заменителем ftp программ. sftp работает как и оригинальная ftp программа. Тем не менее, вместо отправки чистым текстом она использует зашифрованный туннель SSH. Важным преимуществом sftp перед ftp является то, что для неё не требуется запущенный FTP сервер на удалённом хосте. Для неё требуется только SSH сервер. Это означает, что любая удалённая машина, которая подключена через SSH клиент может также быть использована как FTP-подобный сервер. Вот пример сессии:
Alex@MiAl-PC ~ $ sftp [email protected] Connected to 192.168.1.36. sftp> ls dirlist.txt newfile.txt nfile.txt temp Видео Документы Загрузки Изображения Музыка Общедоступные Рабочий стол Шаблоны sftp> lls dirlist.txt nfile.txt sftp> ls temp temp/TakeMeHome sftp> cd temp/ sftp> get TakeMeHome Fetching /home/mial/temp/TakeMeHome to TakeMeHome sftp> bye
SFTP протокол поддерживается многими графическими файловыми менеджерами, которые можно найти в дистрибутивах Linux. Используя как Nautilus (GNOME), так и Konqueror (KDE), мы можем вводить URI (ссылки) начинающиеся на sftp:// в строку перехода и работать с файлами, расположенными на удалённой системе с запущенным SSH сервером.
Хостинг с 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 и поэтому я пользуюсь им уже несколько лет...
Не нашли ответ? Воспользуйтесь поиском по сайту