THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

Подключение по SSH возможно на всех тарифных планах , кроме тарифа «Host-Lite» . Если у вас заказан тарифный план «Host-Lite», повысьте тариф и у вас появится возможность соединения по SSH:

На тарифах виртуального хостинга не предоставляется возможность использования Midnight Commander. Данная возможность присутствует .

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

На вашем компьютере установлена ОС Windows

Для подключения по SSH:

Как только вы подключитесь по SSH, вы окажетесь в домашнем каталоге вашего хостинга. Консольные команды Linux представлены по ссылке . Обратите внимание: многие из этих команд выполнить на виртуальном хостинге не получится (такие как установка и удаление пакетов, монтирование файловых систем и др.), так как вы у вас не root доступ.

На вашем компьютере установлена Linux-подобная ОС (Ubuntu, Kubuntu, Fedora, …)

Подключиться по SSH можно через терминал, уже доступный в ОС.

Готово, вы подключились по SSH.

Можно ли создать дополнительного SSH-пользователя?

На виртуальном хостинге подключение по SSH возможно только под основным логином хостинга (вида u1234567 ). Создать дополнительного пользователя SSH нельзя.

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

Чтобы отключить SSH-доступ на хостинге, напишите . В заявке сообщите ваш логин хостинга (вида u1234567 ), для которого необходимо отключить доступ по SSH.

Что такое и для чего нужен 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 на Linux

Если вы хотите установить сервер/клиент 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 . Если я наберу

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 ».

Ssh [email protected]

Приглашение 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

  • [email protected] - имя пользователя и удалённый хост,
  • . (точка) означает, что файл нужно скопировать в текущую рабочую директорию на удалённом сервере, при этом имя файла останется прежним, т. е. nfile.txt
  • Памятка :

    Для копирования файла с B на A когда залогинены в B:
    scp /path/to/file username@a:/path/to/destination
    Копирование файла с B на A когда залогинены в A:
    scp username@b:/path/to/file /path/to/destination

    sftp

    Вторая программа для копирования файлов через 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 (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, вы можете свободно передавать по нему любые данные, использовать командную строку, запускать приложения на сервере - все действия будут безопасны. Протокол 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-адрес.


    При вводе пароля обратите внимание, что символы, которые вы вводите, никак не отображаются в командной строке. Просто введите пароль (без пробелов) и нажмите Enter.

    В случае успешного подключения вы получите командную строку сервера.


    SSH - (Secure Shell) - это протокол удаленного управления компьютером с операционной системой Linux. В основном ssh используется для удаленного управления серверами через терминал. Если вы администратор нескольких серверов или даже продвинутый веб-мастер, то наверное, вы часто сталкиваетесь с необходимостью работать с тем или иным компьютером по ssh. В Linux для этого используется сервер ssh на машине, к которой нужно подключится и клиент, на той из которой подключаются.

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

    Но начнем с самых основ.

    Синтаксис команды выглядит следующим образом:

    $ ssh [опции] имя пользователя @сервер [команда]

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

    Опции команды SSH

    Теперь давайте рассмотрим самые основные опции команды ssh:

    • f - перевести ssh в фоновый режим
    • g - разрешить удаленным машинам обращаться к локальным портам
    • l - имя пользователя в системе
    • n - перенаправить стандартный вывод в /dev/null
    • p - порт ssh на удаленной машине
    • q - не показывать сообщения об ошибках
    • v - режим отладки
    • x - отключить перенаправление X11
    • X - включить перенаправление Х11
    • C - включить сжатие

    Это далеко не все опции утилиты, остальные выходят за рамки данной статьи. Многие настройки работы ssh можно изменять через конфигурационный файл ~/.ssh/config но здесь мы это тоже подробно рассматривать не будем.

    Настройка сервера SSH

    Настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Многие из них мы тоже трогать не будем. Рассмотрим только самые интересные. Сначала откройте файл /etc/ssh/sshd.conf

    Порт ssh

    По умолчанию ssh работает на порту 22. Но такое поведение небезопасно, поскольку злоумышленник знает этот порт и может попробовать выполнить Bruteforce атаку для перебора пароля. Порт задается строчкой:

    Поменяйте значение порта на нужное.

    Протокол SSH

    По умолчанию сервер ssh может работать по двум версиям протокола, для совместимости. Чтобы использовать только протокол версии два раскомментируйте строчку:

    И приведите ее к такому виду:

    Рут доступ

    По умолчанию Root доступ по ssh разрешен, но такое поведение очень небезопасно, поэтому раскомментируйте строчку:

    PermitRootLogin no

    Доступ только определенного пользователя к SSH

    Мы можем разрешить доступ к ssh только для определенного пользователя или группы. Для этого добавьте строчки:

    AllowUsers User1, User2, User3
    AllowGroups Group1, Group2, Group3

    Здесь User1 и Group1 - пользователь и группа к которым нужно разрешить доступ.

    Выполнение X11 приложений

    Не все знают но есть возможность использовать ssh для запуска полноценных X11 приложений. Об этом мы поговорим ниже, но чтобы все заработало необходимо разрешить эту возможность на стороне сервера, добавьте такую строчку:

    X11Forwarding yes

    Основные опции рассмотрели, перед тем как переходить дальше, не забудьте перезагрузить ssh сервер чтобы сохранить изменения:

    service sshd restart

    Использование SSH

    Основная цель этой статьи - показать интересные и полезные способы использования ssh, о которых, возможно, вы не знали. Переходим к самому вкусному - возможности ssh.

    Подключение к серверу

    Чтобы просто подключиться к серверу по SSH используйте такую команду:

    Выполнить команду

    Мы привыкли подключаться к удаленному серверу, а уже потом выполнять нужные команды, но на самом деле утилита ssh позволяет сразу выполнить нужную команду без открытия терминала удаленной машины. Например:

    ssh user@host ls

    Выполнит команду ls на удаленном сервере и вернет ее вывод в текущий терминал.

    Выполнить локальный скрипт

    Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:

    ssh user@host "bash -s" < script.sh

    Бекап на удаленный сервер и восстановление

    Мы можем сохранять бекэп диска сразу на удаленном сервере с помощью ssh. Перенаправим вывод dd с помощью оператора перенаправления |, затем сохраним его на той стороне в файл:

    sudo dd if=/dev/sda | ssh user@host "dd of=sda.img"

    Теперь чтобы восстановить состояние диска из сделанной копии выполните:

    ssh user@host "dd if=sda.img" | dd of=/dev/sda

    Здесь и выше /dev/sda имя файла вашего жесткого диска.

    Аутентификация без пароля

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

    Настроить такое поведение очень легко. Сначала создайте ключ командой:

    ssh-keygen -t rsa

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

    Затем отправляем ключ на сервер:

    ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

    Взять пароль из локального файла

    Напомню, что хранить пароли в обычных текстовых файлах небезопасно, но если хотите, то да - возможно. Для этого используется оператор перенаправления ввода Bash:

    ssh user@host < local_file.txt

    Изменить приветствие SSH

    При входе по ssh может выводиться приветствие, изменить его очень легко. За это отвечает файл /etc/issue. Просто откройте этот файл и введите нужный текст:

    Смотрим неудачные попытки входа SSH

    Хотите посмотреть были ли попытки неудачного доступа по ssh к вашему серверу и с каких IP адресов? Запросто, все запросы логируются в файл /var/log/secure, отфильтруем только нужные данные командой:

    cat /var/log/secure | grep "Failed password for"

    Передача файлов по SSH

    Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:

    $ scp /адрес/локального/файла пользователь@ хост: адерс/папки

    Например:

    scp ~/test.txt user@host:documents

    Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:

    cat localfile | ssh user@host "cat > remotefile"

    ssh user@host "cat > remotefile" < localfile

    tar czf - /home/user/file | ssh user@host tar -xvzf -C /home/remoteuser/

    Такое копирование файлов ssh позволяет отправлять сразу целые папки.

    Запуск графических приложений по ssh

    Если вам нужно запустить то или иное графическое приложение на удаленной машине необязательно для этого использовать VNC, вы можете обойтись возможностями ssh. Программа будет выполняться на стороне сервера, а вам будет лишь транслироваться окно, чтобы вы могли сделать все что нужно. Причем все данные шифруются. Чтобы эта функция работала, нужно включить ее поддержку на стороне сервера.

    Затем просто выполняем команду запуска графического приложения на удаленном сервере вот таким образом:

    ssh -XC user@remotehost "eclipse"

    Как вы уже видели опция X разрешает перенаправление X11 на стороне клиента, а С - сжатие данных.

    Завершение сессии ssh

    Если вы использовали ssh с нестабильным интернетом, когда соединение время от времени рвется, то вам уже, наверное, надоело закрывать терминал, потому что иначе, на первый взгляд, сеанс никак не прекратить. Когда соединение с удаленным сервером разорвано вы не можете ввести никакую команду и сочетания клавиш Ctrl+C, Ctrl+Z, Ctrl+D не работают. И не будут работать поскольку клиент пытается отправить эти команды на сервер. Но есть решение - Escape последовательности. Чтобы активировать их поддержку добавьте строку:

    В файл /etc/ssh/ssh_config

    THE BELL

    Есть те, кто прочитали эту новость раньше вас.
    Подпишитесь, чтобы получать статьи свежими.
    Email
    Имя
    Фамилия
    Как вы хотите читать The Bell
    Без спама