Удаленное подключение через консоль к Ubuntu-server. Настройка терминала. SSH-сервер. Минимальная настройка SSH в Debian

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

Шаги

Часть 1

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

    Установите SSH. Для Windows потребуется скачать и установить SSH-клиент. Чаще всего для этого берут Cydwin, бесплатно распространяемый SSH-клиент. Впрочем, не обязательно ограничиваться именно им, можно скачать и PuTTY.

    • Устанавливая Cydwin, нужно выбрать вариант установки OpenSSH из Интернета.
    • С Linux и Mac OS проще - там SSH уже встроен в систему. Почему? Это магия UNIX-систем.
  1. Запустите SSH. Откройте установленный Cydwin-терминал или обычный терминал (в Linux и Mac OS). SSH - это только терминал, только консоль. Графического интерфейса не завезли, так что привыкайте печатать команды.

    Проверьте соединение. Перед тем, как погружаться в мир безопасного интернета, надо бы проверить, правильно ли все работает - как ваш компьютер, таки система, к которой вы подключаетесь. Для этого вам придется набрать нижеследующую команду (и не забудьте заменить username на ваше имя пользователя на удаленном компьютере, а remote - на, собственно, адрес удаленного компьютера или сервера):

    • $ ssh @
    • Когда будет установлено соединение, от вас потребуют пароль. Введите пароль и не пугайтесь: да, курсор не движется, а символы не появляются - так надо.
    • Если ничего не вышло, то или у вас SSH настроен криво, или на удаленном компьютере он не поднят.

Часть 2

Основные команды
  1. Перейдите в SSH шелл. Впервые подключившись к удаленному компьютеру, вы должны будете оказаться в папке HOME. Для того, чтобы перемещаться по папкам, вам пригодится команда cd:

    • cd .. - переход на одну директорию вверх
    • cd - переход в конкретную поддиректорию
    • cd /home/directory/path/ - переход в конкретную директорию из рута (home)
    • cd ~ - переход обратно в папку Home
  2. Проверьте содержимое папок. Чтобы увидеть файлы и папки, вам нужна команда ls:

    • ls - выведет на экран список файлов и папок в данной директории
    • ls –l - выведет на экран список содержимого папки и дополнительные сведения (размер, права, дату)
    • ls-a - выведет на экран список всего контента, включая даже скрытый
  3. Копируйте файлы со своего на удаленный компьютер. Да, бывает и так, что надо что-то от себя залить на удаленный компьютер. Как? scp вам в помощь!

    • scp /localdirectory/example1.txt @:Скопирует example1.txt в папку удаленного компьютера, заданную в Если оставить Пустым, то файл скопируется в рут.
    • scp @:/home/example1.txt ./ - переместит example1.txt из рут-папки удаленного компьютера в текущую папку локального компьютера.
  4. Копируйте файлы через шелл. С помощью команды cp вы сможете делать копии файлов в той же директории, либо в директории по вашему выбору:

    • cp example1.txt example2.txt - создаст в той же папке копию example1.txt под названием example2.txt
    • cp example1.txt / - создаст копию example1.txt в папке, заданной в .
  5. Перемещайте и переименовывайте файлы. Если вы хотите изменить имя файла или переместить его, не копируя, то используйте команду mv:

    • mv example1.txt example2.txt - переименует example1.txt в example2.txt. Файл останется в той же папке, где и был.
    • mv directory1 directory2 - переименует папку directory1 в directory2. Содержимое папки не изменится.
    • mv example1.txt directory1/ - переместит example1.txt в directory1.
    • mv example1.txt directory1/example2.txt - переместит example1.txt в directory1 и переименует его в example2.txt.
  6. Удаляйте файлы и папки. Если вы хотите сделать что-то такое, то вооружитесь командой rm:

    • rm example1.txt - удалит example1.txt.
    • rm –I example1.txt - удалит example1.txt, потребовав подтверждение.
    • rm directory1/ - удалит папку directory1 вместе со всем содержимым.
  7. Изменяйте права доступа к вашим файлам. Права на чтение и запись меняются командой chmod:

    Выучите прочите команды. Есть еще несколько важных команд, которые необходимо знать. Например:

    • mkdir newdirectory - создаст новую поддиректорию под названием “Новая папка” или типа того.
    • pwd - покажет, в какой папке вы находитесь сейчас.
    • who - покажет, кто авторизован в системе.
    • pico newfile.txt or vi newfile.txt - создаст новый файл и откроет текстовый редактор. В разных системах - разные редакторы, учтите это. Чаще всего встречаются pico и vi. Соответственно, разным редакторам - разные команды.
  8. Получите подробную информацию о любой команде. Если не не знаете, что получится, если ввести ту или иную команду, то вызывайте справку и просвещайтесь!

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

Что из себя представляют сети SSH на Ubuntu

SSH — это ответ на слабину telnet-протокола, который раньше активно использовали в Ubuntu и Windows. Если пользователь использует такие сети сейчас, то он практически наверняка будет взломан извне путем подставки IP и другими методами. В итоге, логи будут украдены вместе с важной информацией, размещенной на сервере. А если еще и неправильно задать права пользователям, то злоумышленники смогут внести изменения на удаленной основе: или установить вирусы.

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

Чтобы извне, вам потребуется ввести в Ubuntu специальный запрос с адресом удаленного компьютера.

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

Как установить в Ubuntu SSH

Чтобы появилась возможность подключаться по защищенной сети, вам нужно прежде установить сервер и клиент на разные компьютеры. Как правило, пользователи Ubuntu используют программу OpenSSH для работы с этими протоколами. Нет причин, чтобы устанавливать другое ПО, так как для этого есть множество обучающих материалов в Сети.

Чтобы установить OpenSSH, войдите в терминал Убунту и введите строку: sudo apt-get install ssh. Поскольку по умолчанию в каждой Ubuntu уже имеется клиент для SSH-доступа, то по этой команде будет установлен сервер. Далее вам предстоит его настроить, чтобы можно было создать максимально защищенное подключение к локальной сети извне.

Если вас не волнует, что каждый раз при запуске компьютера будет включаться SSH-сервер, то можете не менять этот параметр. В противном случае каждый раз при запуске вы можете вводить через терминал команду загрузки сервера: sudo service ssh start. Но самые главные настройки вам предстоит указать в ключевом файле конфигураций sshd_config. Именно этот файл определяют требования к клиенту для подключения извне к локальной сети. Но проблема в том, что стандартные параметры совсем не обеспечивают безопасность сетевого протокола — их нужно изменить.

Какие определить настройки для SSH

Чтобы доступ был реально безопасным, вам нужно скорректировать некоторую информацию внутри файла config. В частности, вам следует изменить семейство IP, которые будут подключаться к серверу. Ведь вы наверняка знаете какое IP постоянно будет работать с сервером, потом можете через строку AddressFamily inet прописать определенное семейство адресов, которым можно подключаться через протокол.

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

Самая большая пробоина в защищенном протоколе SSH — это возможность суперпользователя входить на сервер извне. То есть к локальной сети по умолчанию может подключиться root-пользователь. Root — это суперадминистратор, который имеет максимальный уровень доступа и может изменять по локальной сети на сервере все, что ему вздумается. Дабы не развязывать руки всем пользователям, лучше вообще запретить вход через root — пропишите в строке: PermitRootLogin no.


По умолчанию доступ к локальной сети через протокол SSH стоит самый элементарный — через систему логин/пароль. А такую систему, как известно, очень легко взломать, потому лучше вообще убрать подобную «защиту» при помощи строки PasswordAuthentication no. Но еще большая пробоина, которая может быть в вашем «судне» — это использование старого протокола SSH. Дело в том, что есть всего две версии: SSH1 и 2. Казалось бы, разница между ними только в названии, но на деле эти версии сильно отличаются по уровню безопасности. Доступ SSH1 — это уже не актуально, потому лучше, чтобы в файле config у вас было прописано Protocol 2 для использования новой версии соединения.

Наиболее оптимальный способ для подключения к локальной сети на сервере извне через SSH — это использование публичных ключей. Для активации этой функции в файле config должна быть прописана следующая строка: PubkeyAuthentication yes. Если это так, то прежде чем подключиться, сервер будет сверять публичный ключ, расположенный в специальной папке в клиенте. Если он соответствует, то соединение будет допущено, а если нет, то вы не сможете подключиться. Ключ генерируется при помощи специальных key-генераторов, а в Убунту при помощи определенной строки. Кроме доступа по публичным ключам, вы также сможете настроить фильтрацию пользователей по именам и IP-адресам. То есть не семействам, а по конкретным IP.

Как подключиться к локальной сети извне

Итак, чтобы войти на сервер, который работает посредством локальной сети, через удаленный клиент, вам нужно сначала разобраться с настройками безопасности. Если у вас установлена проверка публичного ключа — это хорошо, но нужно сначала позаботиться о . Это нужно сделать на клиентской машине. Для этого через терминал пропишите следующую строку: ssh-keygen -t rsa. После этого Убунту спросит у вас пароль. Если вы планируете использовать различные скрипты, то лучше оставьте поле пустым. Ну, а если начнете вводить пароль, то учтите, что поле будет оставаться пустым — это уже такая опция безопасности в ubuntu.

Теперь, чтобы зайти через клиент на сервер, достаточно будет прописать такую функцию (используется для нестандартного порта, то есть является универсальной): ssh-copy-id -i ~/.ssh/id_rsa.pub «-p port user@server». Ведь подключение к локальной сети или к Интернету сервера бывает невозможным из-за нестандартных портов. Как правило, IP сервера различается для локальной сети и для Интернета, так что учтите эту особенность.

Настраиваем доступ по SSH

Часть 2.

Перед тем как начнём, давайте создадим нового пользователя с root правами.

Укажем права пользователю test командой

usermod -a -G sudo test

Чтобы убедиться, что пользователь test был добавлен в группу sudo, можно выполнить следующую команду:


Теперь настраим удаленный доступ к серверу по ssh (командная строка), как по локальной сети, так и по интернету

Установим ssh

sudo apt-get install openssh-server

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

sudo nano /etc/ssh/sshd_config

По умолчанию, ssh использует порт 22. Заменим его на нестандартный, это повысит безопасность нашего доступа. Порт заменим например на 2200

При подключении по ssh, наш сервер потребует вместо пароля ключ RSA, а не пароль. Что бы этого не произошло, в параметре RSAAuthentication и PubkeyAuthentication, вписываем "NO". Так же запрещаем доступ пользователю ROOT, для этого нужно раскомментировать параметр Authetication: и в параметре PermitRootLogin вписать "NO"


Теперь пропишем доступ пользователям

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

Пропишем пользователю test права доступа и разберёмся в них.

    test@* - пользователь test может подключаться откуда угодно
    [email protected].* - пользователь test может подключаться только находясь в 192.168.0.0 подсети
    [email protected] - пользователь test может подключиться только с ip адреса 192.168.0.104
    *@192.168.0.* - все пользователи могут подключаться находясь в 192.168.0.0 подсети


Так же можно запретить доступ определённым пользователям (например пользователю test2), для этого нужно вписать ниже

Запускаем

sudo /etc/init.d/ssh start

Ssh мы настроили. Теперь откроем к нему доступ. Для этого откроем доступ к порту 2200.

В прошлой части мы устанавливали firewall командой arno-iptables-firewall, теперь нужно внести туда изменения. По этому перенатроим его.

sudo dpkg-reconfigure arno-iptables-firewall

Запустилась настройка

Вписываем порт, который нужно открыть. Так же в этом окне можно вписать и другие порты, если они нуждаются в открытии.


В следующем окне, так же вписваем порт 2200.

Как только вписали порты, можно везде нажимать ENTER и перезагрузить Файрвол.

После этого порт ssh будет доступен из сети

Для повышения безопасности ssh соединения можно настраиваем утилиту denyhosts. Утилита представляет собой python-скрипт, который анализирует файл /var/log/auth.log на наличие записей о несанкционированных попытках входа на сервер по ssh и добавляет ip-адреса, с которых осуществлялись эти попытки в файл /etc/hosts.deny, с которых запрещен вход по ssh.

Установим командой

sudo aptitude install denyhosts

Сразу после установки утилита просканирует файл /var/log/auth.log и добавит ip-адреса, с которых осуществлялся подбор паролей, в /etc/hosts.deny. На сканирование потребуется время, если в файле /var/log/auth.log уже много таких записей.

После установки нужно подправить конфигурационный файл

sudo nano /etc/denyhosts.conf

Скорректируем настройку PURGE_DENY на 3 часа. А то мы можем заблокировать доступ самому себе, введя несколько раз неверный пароль.

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

ADMIN_EMAIL = [email protected] вместо [email protected] указываем свою почту

Для того чтобы новые настройки вступили в силу, нужно перезапустить службу denyhosts:

sudo service denyhosts restart

P.S. Если вам понадобиться сменить пароль на учетной записи. Введите команду

passwd user - где user это имя пользователя

P.S.S. Если возникнут проблемы с кодирвкой, то покопайтесь в настройках клиентской программы shh

Самая популярная программа для работы по ssh, программа PuttY.

Скачать её можно здесь

Статья обновлена 18.12.2017, исправлены опечатки и ошибка с перемещением публичного ключа вместо приватного.

Цели

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

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

Установка пакетов

Установить сервер OpenSSH в Debian очень просто:

Установка

Apt-get install openssh-server -y

Вместе с самим сервером ставится несколько зависимостей. В моём случае (Debian 7.5) это openssh-client и ncurses-term .

Служба сервера sshd будет автоматически запущена после установки. Обращаться к ней в терминале следует по имени ssh , например (запуск, остановка, перезапуск):

Установка

Service ssh start service ssh stop service ssh restart

Увеличение длины серверного ключа

По умолчанию длина ключа OpenSSH в Debian 7 - 768 бит, что явно недостаточно. Следует указать значение не ниже 2048 и сгенерировать ключи заново!

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

  1. Переходим в каталог /etc/ssh
  2. Изменяем в sshd_config значение параметра ServerKeyBits с 768 на 2048 .
  3. Удаляем старые ключи командой

    Rm -rf ssh_host_*

    Выполняем перегенерацию ключей сервера (служба будет перезапущена автоматически):

    Dpkg-reconfigure openssh-server

Минимальная настройка

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

  • Port 22 - лучше всего сразу сменить порт на другой, однако, номер порта желательно выбрать больше 1024, чтобы случайно не создать конфликт с какой-нибудь другой программой, работающей на этом порту.
  • ListenAddress 0.0.0.0 - по умолчанию закомментировано. Можно указать, какой интерфейс должен слушать наш сервер. Если на сервере несколько интерфейсов, один из которых торчин наружу, например, предоставляет доступ к WEB-серверу, а работа с сервером будет производиться только из внутренней сети, я советую указать здесь адрес сервера во внутренней сети, чтобы заблокировать доступ из Интернета.
  • UsePrivilegeSeparation yes - ни в коем случае не отключать разделение привилегий!
  • LoginGraceTime 120 - время в секундах, в течение которого следует авторизоваться на сервере. По истечении указанного интервала сервер автоматически разорвёт соединение.
  • PermitRootLogin yes - настоятельно рекомендую сменить на no ! Пользователь root не должен подключаться к серверу! Для выполнения команд, требующих повышения привилегий, следует использовать sudo !
  • PubkeyAuthentication yes - включаем, т.к. дальше будет рассматриваться использование публичных ключей для подключения к серверу.
  • AuthorizedKeysFile %h/.ssh/authorized_keys - следует раскомментировать для доступа с помощью открытых ключей шифрования. По умолчанию эта настройка указывает на то, что открытые ключи каждого пользователя следует искать в его домашнем каталоге, в файле authorized_keys , лежащем в подкаталоге.ssh .

Изменив эти минимальные настройки, перезапустите службу ssh .

Проверка работоспособности

Попробуйте подключиться к своему серверу с него самого:

Ssh user@localhost

где user - ваш настоящий логин в системе.

При самом первом подключении ваш SSH-клиент будет спрашивать, следует ли доверять указанному хосту и принять от него ключ шифрования. Отвечаем yes (нужно написать слово полностью). Сервер предложит ввести пароль для авторизации в системе. Вводим его. Если всё правильно, вы окажетесь в консоли, где сможете вводить команды.

Генерация и размещение ключей

Генерация ключей

При шифровании с открытым ключом потребуется создать пару из двух ключей - открытого и закрытого. В *nix-системах стандартным средством для их генерации является программа ssh-keygen . Запуск её с различными параметрами приводит к созданию различных ключей. В нашем случае будет использован минимум настроек.

Выполните указанную ниже команду для создания ключа длиной 2048 бит и с комментарием "New generated key". Права root не требуются. Я советую добавить комментарий для ключа - в этом случае при подключении с его помощью в логах сервера будет отображаться этот комментарий. Можете ввести сюда свои имя и фамилию.

Генерация пользовательских ключей

Ssh-keygen -b 2048 -C "New generated key"

Система предложит указать имя для новых файлов. Для примера будем использовать new_key

Затем будет задан вопрос, какая парольная фраза будет использоваться для ключа. Если не заполнять это поле, то ключ не будет защищён паролем. Рекомендую ввести сюда что-нибудь. После первого ввода парольной фразы будет предложено ввести её ещё раз.

После этого в текущем каталоге (если вы ввели имя файла выше) будут созданы два файла - new_key и new_key.pub

Файл new_key - это закрытый ключ. Его нужно сохранить в надёжное место на вашем компьютере и не давать никому. Как правило, его кладут в домашнем каталоге в папку.ssh под именем id_rsa , при этом права на файл должны быть 0600:

Изменение прав доступа к ключу

Mv new_key ~/.ssh/id_rsa chmod 0600 ~/.ssh/id_rsa

Если права будут указаны неправильно, могут возникнуть проблемы. Например, утилита Seahorse из комплекта Gnome при попытке добавить этот ключ в хранилище будет запрашивать пароль, но при нажатии кнопки "Сохранить" выдаст ошибку.

Файл new_key.pub - это открытый ключ. Его также следует сохранить на вашем компьютере, однако, именно его следует распространять на серверах, к которым вы будете подключаться.

Размещение ключей на целевой системе

Если в домашнем каталоге пользователя не существует каталога.ssh , создайте его, а внутри него разместите пустой файл authorized_keys .

Размещение ключей на сервере

Cd ~ mkdir .ssh cd .ssh/ touch authorized_keys

Теперь в этот файл мы добавим наш открытый ключ с помощью стандартной команды >>

Cat ~/new_key.pub >> authorized_keys

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

Использование закрытых ключей и Putty

Формат закрытых ключей, используемых программой Putty, несколько отличается от того, который используется в *nix-системах. Тем не менее, в комплекте идёт программа puttygen. Запустите её.

В меню выберите пункт Conversion , а в нём - Import key .

Найдите ваш закрытый ключ и откройте его.

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

Нажмите кнопку Save private key

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

Создайте в Putty новое подключение. В настройках найдите пункт Auth . На этой странице в поле Private key file for authentication выберите сохранённый ключ.


Сохраните подключение.

Нажмите Open

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

Набираем в консоли команду:

$ sudo apt-get install openssh-server

Все, сервер установлен и запущен. Протестируем его. Для этого в консоли набираем:

$ ssh localhost

Если все хорошо, то появится приглашение на ввод пароля. Вводим свой пароль. Чтобы завершить ssh-соединение наберем:

Примечание: ssh-работает на 22 порту, хотя номер порта можно изменить. Удостовертесь, что этот порт доступен извне, а не закрыт.

Настройка ssh-сервера.

В принцип сервер уже работает, но дополнительная настройка на тему безопасности еще никому не помешала. Все настройки ssh-сервера хранятся в файле /etc/ssh/sshd_config

$ sudo nano /etc/ssh/sshd_config

Что в этом файле самое интересное?

    Здесь задается номер порта, на котором работает ssh-сервер. Рекомендуется изменить.

    PermitRootLogin no

    Запрещаем подсоединяться к ssh-серверу используя логин суперпользователя.

    PermitEmptyPasswords no

    Запрещать подсоединяться пользователям, у которых пустые пароли. Очень рекомендуется, даже если вы единственный пользователь в системе.

    AllowUsers user1 user2

    Разрешаем подключаться только указанным пользователям. Логины пользователей разделяются пробелом. Рекомендуется при условии, что вы не единственный пользователь системы.

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

$ sudo /etc/init.d/ssh restart

Чем подключаться?

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

$ ssh username@hostname

где, username - имя пользователя на удаленной системе, а hostname - имя узла или его IP-адрес.

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

Примечание: если ваш ssh-сервер находится на порту отличном от 22 (например, 1010), то команду надо набирать так - ssh -p 1010 username@hostname

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

Статьи по теме: