Использование SSH для подключения к удаленному серверу Ubuntu. Установка и настройка SSH - Ubuntu Linux открыть ssh

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

Что такое SSH?

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

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

Начало SSH было положено Тату Илёненом из Финляндии в 1995 году, который задействовал его как более конфиденциальный протокол. Эта версия была названа SSH-1. На данный момент практически нигде не используется.

В 1996 году была разработана усовершенствованная версия SSH-2. Она несовместима с SSH-1, более защищенная и имеет расширенный список алгоритмов шифрования. Сейчас под SSH понимается именно версия SSH-2. С 2006 года протокол признан интернет-стандартом ассоциацией IETF.

Существует две основных реализации SSH. Одна из них проприетарная, которая разрабатывается SSH Communications Security. Вторая - OpenSSH, созданная под руководством Тео де Раадта как свободная открытая альтернатива первой. Является самой распространенной и включена в поставку большинства Unix-подобных систем.

Что такое клиент SSH и сервер SSH

Подключение по протоколу SSH реализуется с помощью двух основных компонентов: клиента и сервера.

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

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

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

Стандарт SSH включает в себя три протокола:

  • Протокол транспортного уровня - гарантирует аутентификацию сервера, секретность и целостность. Обеспечивает сжатие данных. Работает поверх TCP/IP.
  • Протокол аутентификации — исполняет аутентификацию клиента для сервера. Действует поверх уровня транспортного протокола.
  • Протокол соединения — представляет зашифрованный канал в виде мультиплексированного канала из нескольких логических, используемых для разных служб. Работает поверх канала аутентификации.

Повышение безопасности гарантируется аутентификацией клиента для сервера, к которому обращается клиент ssh и аутентификацией сервера клиентом. Происходит аутентификация обеих сторон.

Клиент шлет запрос в первый раз, когда устанавливается безопасное соединение транспортного уровня. Второй запрос направляется после завершения аутентификации SSH-клиента.

Реализация OpenSSH

OpenSSH — это открытая реализация команды OpenBSD. Является самой распространенной версией благодаря свободному распространению.

Пакет OpenSSH включает набор таких инструментов:

  • SSHD — серверная часть.
  • SSH — клиентская часть.
  • SCP — утилита для защищенного копирования файлов.
  • SSH-keygen — генерирует открытые ключи (RSA, DSA и другие) для компьютеров и пользователей.
  • SSH-keyscan — собирает публичные ключи в сети.
  • SSH-agent — хранит личные RSA ключи для последующей авторизации с публичными ключами.
  • SSH-add — добавляет новые личные ключи агенту SSH-agent.
  • SFTP-server — SFTP сервер.
  • SFTP — утилита для безопасного копирования файлов по FTP.

OpenSSH включен в поставку из коробки для большинства Unix-подобных систем. Самые распространенными считаются Linux, Open (Free, Net) BSD, Solaris, HP-UX, Irix, MacOS X и другие.

Активная разработка ведется в реализации OpenSSH for Windows, которая доступна для скачивания насайте. Она позволяет создавать SSH-сервер в системах семейства Windows, имеет клиент SSH для подключения. OpenSSH for Windows включен в поставку CygWin.

Наиболее популярными среди пользователей являются дистрибутивы на базе ядра Linux. В дальнейшем все примеры использования SSH будут подразумеваться в настройке OpenSSH. Для наглядности работы в Linux будет настроен SSH-клиент для Ubuntu, Windows и Mac OS X.

Установка и настройка openssh-server

Существует множество вариантов конфигурации OpenSSH -server. Настройка клиента должна производиться исходя из конфига сервера. В этом разделе приведен пример сервера SSH, установленного на Ubuntu Server Edition. При последующих описаниях настройки клиентов будет использоваться конфигурация этого сервера.

1. Есть два способа установки OpenSSH -server:

1.1. Выбрать установку пакета OpenSSH -server сразу же в процессе разворачивания Ubuntu Server/

1.2. Скачать и установить из репозитория, выполнив команду:

2. Ознакомиться со значениями конфигурация сервера SSHD по умолчанию в файле /etc/ssh/sshd_config можно командой:

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

4. В настройках по умолчанию установлен 22. Для безопасности рекомендуется заменять его нестандартным значением, например, 5754. Изменить директиву Port можно командой:

5. Сохраните файл/etc/ssh/sshd_config и перезапустите SSHD:

Сервер установлен и настроен. Теперь он прослушивает порт 5754. По умолчанию получить доступ может любой пользователь системы с правами на вход. Аутентификация производится с помощью пароля или ключей DSA, RSA, ed25519 и др.

Кросплатформенный OpenSSH-client для терминала. SSH клиент для Linux

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

В составе пакетов OpenSSH-клиент реализован в виде программы SSH, которая запускается одноименной командой. Настройка и управление клиентом производится через терминал, он не имеет графического интерфейса. Считается самой простой и удобной версией.

Установка и настройка OpenSSH-client на Ubuntu

На удаленной машине имеется установленный и сконфигурированный OpenSSH-server. Задача состоит в том, чтобы получить к нему доступ с локального компьютера, на котором установлена Ubuntu.

1. В Ubuntu по умолчанию не добавлен дистрибутив OpenSSH-client, поэтому установить его необходимо командой:

2. После она вызывается командой SSH из терминала без Root.

3. В случае если используется аутентификация пользователей по паролю:

1) подключение производится командой:

  • username — имя учетной записи на удаленной машине,
  • host — это IP-адрес удаленного сервера (или домен, если домен был делегирован на сервер);

2) после ввода команды необходимо нажать Enter - появится запрос на ввод пароля; требуется ввести пароль от учетной записи удаленной машины (следует быть внимательным, так как для безопасности ввод пароля никак не отображается);

3) после правильного ввода пароля появляется окно терминала удаленного сервера с приветствием; теперь можно выполнять необходимые команды.

1) при необходимости сгенерировать открытый и закрытый ключи SSH можно из OpenSSH-client:

2) по умолчанию публичный ключ сохраняется в файл /home/user/.ssh/id_dsa.pub, а закрытый в /home/user/.ssh/id_dsa;

3) сгенерированный публичный ключ необходимо скопировать на удаленную машину и добавить его к авторизации /home/user/.ssh/authorized_keys командой:

Теперь пользователь может идентифицироваться на SSH-сервере без ввода пароля.

Установка и настройка OpenSSH для Cygwin Terminal на Windows

Установка Cygwin производится запуском файла Cygwin.exe, который скачивается с официального сайта.

Cygwin — это сборка множества разных пакетов. Для работы с удаленным терминалом требуется только OpenSSH. Найти его можно с помощью поиска в самом Cygwin.

После установки пакета нужно запустить Cygwin Terminal и ввести команду:

После чего нажать Enter. Появится запрос на ввод пароля. После прохождения аутентификации появляется терминал удаленного сервера с приветствием пользователя.

Синтаксис точно такой же, как и в OpenSSH-client, реализованном для Linux.

Кроссплатформенный SSH-клиент с графическим интерфейсом PuTTY

Putty — графический клиент SSH для удаленного администрирования, включающий в себя поддержку протокола SSH. Программа распространяется с открытым кодом и абсолютно бесплатная.

Изначально выпускался только для OS Windows, но позже клиент был портирован для Linux, входит в репозитории практически всех популярных дистрибутивов.

Активно разрабатывается для работы в Mac OS X.

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

Установка PuTTY Linux Ubuntu

1. Установить PuTTY можно командой:

2. Запуск выполняется командой putty из терминала или кликом мыши из меню:

3. Открывается окно настроек клиента, где необходимо прописать параметры соединения.

Установка PuTTY для Windows

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

PuTTY — SSH-клиент для Mac. Установка и запуск GUI-версии

На момент написания статьи PuTTY не был адекватно портирован для работы в Mac OS X. Проблемы возникали на компиляции той части, которая отвечает за графический интерфейс.

Для установки следует выполнить некоторые предварительные работы.

1. Установить Xcode.

Пакет утилит и программы от Apple для разработки и сборки приложений под Mac OS X.

С версии Mac OS Lion необходимо поставить «Command Line Tools for Xcode» с сайта Apple Developer.

После установки требуется принять соглашение о лицензии:

2. Установить Xquartz.

Это реализация сервера X.Org X Window System (X11) для Mac OS X. Требуется для GUI-версии PuTTY, написанного на GTK+. Установить можно с официального сайта. После установки потребуется релогин.

3. Установить Homebrew.

4. Установка Putty выполняется командой:

Процесс может занять больше получаса, так как будет установлено множество зависимостей вроде Glib/GTK+/Pango/Cairo.

5. Создание файла запуска Putty.app.

Необходимо запустить Automator.app. В типе документа выбрать «программа», в действиях нужно выбрать «запустить shell-скрипт», в поле ввода прописать путь до исполняемого файла «/user/local/bin/putty», сохранить как «putty.app», указав формат файла «программа», в директорию «программы». При желании стандартную иконку можно заменить.

Настройка SSH клиента PuTTY

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

Для подключения к удаленной машине по SSH требуется запустить PuTTY. В появившемся окне программы необходимо установить параметры:

Connection Type — тип соединения — устанавливается SSH.

Host Name (or IP-adress) — имя хоста, или IP-адрес — здесь указывается IP-адрес удаленного сервера, доменное имя или адрес в интернете. В приведенном примере указан IP-адрес 192.168.128.3

Port — прослушиваемый порт — на сервере, который был приведен в качестве примера, настроен порт 5754. Его и указываем.

При нажатии кнопки "Open" появится окно терминала, где потребуется ввести имя учетной записи удаленной машины и пароль.

В случае необходимости аутентификации клиента парой ключей потребуется утилита puttygen.exe, которая запускается в ОС Windows. PuTTY-Gen генерирует свою пару ключей public и private.

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

Приватный ключ генерируется формата.ppk и добавляется в клиент. Слева в дереве нужно найти SSH, развернуть список, найти Auth и в этом параметре в поле «Private key file for Authentication» выбрать ключ.

После этих манипуляций пользователь может проходить аутентификацию на сервере без ввода пароля.

На данный момент PuTTY считается универсальным клиентом SSH с графическим интерфейсом. Сторонние разработчики Gao-Feng создали SSH-клиент для Android, как мобильную версию PuTTY.

Лучший SSH-клиент

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

Как правило, пользователи *Unix-систем склоняются к использованию стандартного SSH из пакета OpenSSH. Он обладает понятным универсальным синтаксисом и доступен напрямую из терминала. Для работы с дополнительными инструментами вроде защищенного копирования файлов (SCP) не требуется устанавливать дополнительные программы. Все необходимое включено в OpenSSH.

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

Установка будет выполнятся из стандартных репозиториев Ubuntu, поэтому потребуется настроенное подключение к сети интернет.

В Ubuntu Server 12.04 используется OpenSSH Server, который и будет установлен. Выполните следующую команду:

sudo apt-get install openssh-server

Установка не займет много времени, возможно несколько минут, в зависимости от скорости подключения к сети интернет. После того, как установка будет завершена можно сразу запустить службу sshd и начать пользоваться ssh сервером, т.к. все настройки OpenSSH, которые устанавливаются при его инсталляции имеют высокую степень безопасности. Для запуска сервера OpenSSH выполните:

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

Повышение безопасности ssh сервера

Прежде чем приступить к внесению изменений в файл конфигурации /etc/ssh/sshd_config необходимо сделать его копию на всякий случай. Например, можно скопировать файл в свою домашнюю папку:

sudo cp /etc/ssh/sshd_config ~

Теперь можно приступить к настройке сервера ssh. Откройте файл /etc/ssh/sshd_config в текстовом редакторе, например, vi:

sudo vi /etc/ssh/sshd_config

Смена порта ssh-сервера

Стандартный TCP/IP порт, который использует ssh-сервер - 22. Зная это многие автоматические программы взлома сканируют сеть, определяя открытые 22 порты и пытаются соеденится по протоколу ssh и подобрать пароль. В том случае, если имя пользователя и пароль просты (что, конечно же, недопустимо) вы подвергаетесь риску, что они будут подобраны и злоумышленник попадет в вашу систему. Смена порта на любой другой в большинстве случаев позволит спрятать ваш ssh-сервер от автоматических систем взлома. Для смены порта найдите в файле конфигурации строчку "Port 22" и измените значение порта, например:

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

Запрещение входа пользователя root по ssh

Запрет входа пользователя root через ssh также несколько улучшит безопасность, ведь если атакующему удастся подобрать пароль и зайти в вашу систему под root"ом, то он сразу получает полный контроль над системой. Для выполнения этой настройки найдите параметр "PermitRootLogin" и смените его значение с "yes" на "no":

Разрешение входа по ssh только определенным пользователям

Другой способ повышения безопасности - ограничить количество пользователей, которым разрешен вход по ssh. Это можно сделать с помощью директивы "AllowUsers". Когда она присутствует в файле конфигурации вход разрешен только тем пользователям, которые описаны в ней. Например, вы хотите разрешить выполнение входа через ssh только пользователю "howtoit", для этого допишите в конец файла /etc/ssh/sshd_config строчку:

Если вы хотите внести в список нескольких пользователей, просто добавьте их через пробел, например так:

AllowUsers howtoitru someuser

После окончании настройки сохраните и закройте файл конфигурации и перезапустите сервер ssh:

Теперь вы сможете подключится к вашей системе Ubuntu Server 12.04 c другой машины, используя ssh-клиент.

И Vino . Общий принцип работы: с компьютера под Windows создается защищенный SSH-туннель до Ubuntu и через него создается VNC-подключение (удаленный рабочий стол).

Статья делится на четыре части:

  • Установка и активация SecureShellServer: sudo apt-get install openssh-server service ssh status ssh start/running, process 2006

    Проверка открытости 22 порта (порт, используемый по умолчанию SSH):

    Netstat -tulpan | grep:22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -

    В Linux ля подключения по SSH с использованием локального проброса портов (local port forwarding) используется в общем виде следующая команда

    Ssh -C -p -L <локальный_порт>:<адрес_машины>:<удаленный_порт> -l <пользователь>

    Это означает, что любое соединение, исходящее из локального компьютера (localhost) через порт <локальный_порт> будет перенаправлено по SSH-тунелю на <удаленный_порт> удаленной машины.

    Существует некоторая путаница относительно какие же IP указывать в и <адрес_машины>. Если компьютер находится за роутером (NAT’ом) то <адрес_машины> должен быть внутренним ip-адресом компьютера (например, 10.0.0.5), а в внешним ip-адресом роутера. Если компьютер подключается к Интернету напрямую, то адреса и <адрес_машины> будут одинаковыми.

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

    Ssh -l myuserid -L 7777:work:22 gate ssh -p 7777 localhost

    Данная комманда делает следующее: создается защищенное ssh-подключение к машине gate под пользователем myuserid. Одновременно с этим начинается прослушивание на локальной (с которой осуществлялось подключение) машине на порту 7777. Если организуется подключение на этот порт (опять изнутри самой локальной машины), то это соединение туннелируется в ssh-соедиенние, доходит до машины gate и с нее осуществляется соединение на машину work на 22 порт. После этого мы проверяем работу туннеля — подключаясь по ssh на локальный порт 7777 мы в итоге подключаемся к машине work (при учете что на ней настроен ssh сервер на порту 22).

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

    /home/<имя_пользователся>/.ssh

    /home/<имя_пользователся>/.ssh/authorized_keys

    в ней, если нет, то создаем под пользователем <имя_пользователся>(как правило, это первый пользователь в системе или администратор)

    Mkdir ~/.ssh cd ~/.ssh touch authorized_keys

    Настраиваем ssh для большей безопасности. Файл настроек лежит по адресу

    /etc/ssh/sshd_config

    Делаем резервную копию

    Sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original

    В общем случае следует изменить:

    • TCP-порт прослушивания (по умолчанию 22):
      Port <Порт_на_котором_SSH_будет_ждать_подключения>
    • Отключить ненадежный старый протокол SSH ver.1:
      Protocol 2
    • Разрешить аутентификацию парой открытого/закрытого ключей:
      PubkeyAuthentication yes
    • Указывать, где смотреть на разрешенные публичные ключи:
      AuthorizedKeysFile %h/.ssh/authorized_keys
    • Отключить возможность аутентификации с помощью пароля (можно сделать и позже, после удачного первого соединения):
      PasswordAuthentication no

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

    ~/.ssh/authorized_keys

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

    Особое внимание нужно обратить на форматирование – весь ключ должен быть размещен в одну строку и начинаться с «ssh-rsa » и доступ к файлу (-rw——- (600)).

    Настраиваем правильный доступ к файлу с ключами

    Chmod go-w $HOME $HOME/.ssh chmod 600 $HOME/.ssh/authorized_key chown `whoami` $HOME/.ssh/authorized_keys

    В файле настроек /etc/ssh/sshd_config изменяем

    StrictModes no

    Для применения настроек, внесенных в файл /etc/ssh/sshd_config , необходимо перезапустить демон sshd.

    Sudo /etc/init.d/ssh restart

  • Скачиваем putty.exe.
    Перед тем как погрузиться в настройки Putty необходимо сделать несколько замечаний.
    • Putty сохраняет настройки в профили.
    • Для сохранения всех настроек в профиль нужно перейти в меню Session в графе Saved Session ввести имя профиля и нажать Save. Для того чтобы загрузить определенный профиль в Putty в том же меню нужно выбрать нужный профиль по имени и нажать Load.
    • Для автоматической загрузки определенного профиля при запуске Putty нужно создать ярлык на exe-файл и в строке Рабочая папка дописать после пути к exe файлу добавить
      -load <имя_профиля>

    Для улучшения безопасности будет использоваться:

    • локальный проброс портов
    • система с открытым ключом

    В случае использования SSH-подключения для доступа по VNC (удаленному рабочему столу) необходимо настроить проброс портов, так называемый local port forwarding . Он используется для повышения безопасности, так как при использовании VNC данные передаются в открытом виде.

    Для проброса портов в Putty переходим в меню Connection -> SSH -> Tunnels и добавляем 5900 как "Source port", localhost:5900 в "Destination" и нажимаем Add.

    Для создания пары открытого/закрытого ключей можно использовать программу Puttygen. Скачиваем Puttygen.exe . В параметрах выбираем SSH-2 RSA, количество битов устанавливаем 2048 и нажимаем кнопку Generate.

    Для дополнительной защиты можно дважды прописать "passphrase". Если есть необходимость при SSH-соединении сразу входить в консоль, то поле можно оставить пустым.

    Открытый ключ сохраняется в понятном только Putty форматировании. Поэтому для установки его в Linux нужно сделать следующее:

    1. Пока puttygen еще открыта – скопировать публичный ключ в разделе "Public key for pasting…" И вставить в файл authorized_keys на сервере.
    2. Указать Putty на файл закрытого ключа в меню Connection -> SSH -> Auth в разделе "Private key file for authentication" сгенерированный файл*.ppk.
  • По умолчанию в Ubuntu уже включен VNC-сервер Vino. Для его настройки нужно перейти в Menu -> System -> Preferences -> Remote Desktop и включить удаленный доступ. В настройках можно включить аутентификацию по паролю, но нельзя настроить порт прослушивания (используется 5900).
    Для возможности более детальной настройки рекомендуется установить X11VNC.
  • Скачиваем TightVNC и устанавливаем. Для целей данной статьи достаточно выбрать только роль клиента.

    Запускаем на Windows машине TightVNC и в поле вбиваем

    Localhost:5900

Что такое и для чего нужен 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 сервером.

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

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

    SSH или Secure Shell - это протокол безопасного доступа из одного компьютера к другому по сети. У протокола SSH очень много возможностей. Вы можете создавать защищенные соединения между компьютерами, открывать командную строку на удаленном компьютере, запускать графические программы, передавать файлы и организовывать частные сети.

    За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.

    Установка OpenSSH в Ubuntu

    Установить ssh на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве ее нет, но зато она есть в официальных репозиториях.

    Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

    sudo apt install openssh-server

    Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить ssh Ubuntu 16.04 выполните:

    sudo systemctl enable sshd

    Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:

    sudo systemctl disable sshd

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

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

    Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

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

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

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

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

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

    sudo vi /etc/ssh/sshd_config

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

    По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:

    Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes .

    После того как все настройки будут завершены, сохраните изменения нажав:w и перезапустите службу ssd:

    sudo systemctl restart ssh

    Более подробно про настройку и использование различных тонкостей ssh рассказано в статье .

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

    ssh -p 2222 localhost

    К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:

    sudo ufw allow 2222

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

    sudo ufw allow 22

    Настройка ssh Ubuntu 16.04 полностью завершена.

    Выводы

    Теперь, когда установка ssh Ubuntu 16.04 завершена, вы можете получить удаленный доступ к своему компьютеру через интернет и быть уверенными что он находится в безопасности. Если у вас остались вопросы, спрашивайте в комментариях.

    На завершение видео, где подробно рассказано о том, что такое ssh:

    Похожие статьи