Установка и настройка сервера SSH в Linux. Как пользоваться протоколом SSH в Ubuntu: установка и настройка Не подключается по ssh ubuntu
Данная статья посвящена настройкам удаленного доступа к Ubuntu Server. Принцип подключения очень прост: на стороне клиента мы используем программу для удаленного доступа (например, Putty), на стороне сервера устанавливаем и настраиваем пакет OpenSSH. При подключении клиент проходит процедуру авторизации у сервера и между ними устанавливается зашифрованное соединение. Более подробно принцип работы протокола SSH рассматривался в статье по .
Схема сети представлена ниже. Удаленное подключение к серверу будет производиться с компьютера client.
В мы установили Ubuntu Server на чистый жесткий диск. После установки необходимо настроить сетевой интерфейс сервера для выхода в сеть. А, именно, задать Ip-адрес, маску сети, шлюз по-умолчанию. Если у вас интерфейс уже настроен – можете этот шаг пропустить. Настройки сетевых интерфейсов задаются в файле /etc/network/interfaces . Для редактирования воспользуемся текстовым редактором nano .
Попадаем в режим редактирования файла interfaces. Нас тут интересует все, что ниже # The primary network interface. В данный момент сервер получает IP-адрес по DHCP, что не совсем правильно. Сервер должен иметь статический IP, чтобы все узлы в сети точно знали его адрес. Пропишем сетевые настройки вручную.
Мой сервер находится в локальной подсети 192.168.1.0/24. Серверу назначен IP 192.168.1.2, маска 255.255.255.0, шлюз по-умолчанию 192.168.1.1, адрес DNS-сервера 192.168.0.1
Для сохранения файла нажимаем клавиши Ctrl + X –> Y —> Enter. Чтобы применить настройки необходимо перезапустить процесс network. Также можно просто перезагрузить сервер командой sudo reboot.
Проверяем (команда ifconfig -a ) – настройки применились
Все готово для OpesnSS, который можно установить из терминала командами
$ sudo apt-get install openssh-client
$ sudo apt-get install openssh-server
Управлять запуском, остановкой и перезапуском SSH-сервера можно с помощью команд
$ sudo service ssh stop | start | restart
По сути доступ по SSH на сервер уже есть. Но для более тонкой настройки существует конфигурационный файл по адресу /etc/ssh/sshd_config. Доступ к конфигам осуществляется только из под рута.
На стороне клиента скачиваем любую программу для подключения по SSH, я рекомендую Putty . В программе останется лишь ввести Ip-адрес сервера и подключиться к нему. При подключении вводим имя и пароль пользователя.
Подписывайтесь на нашу
Для установки ssh-сервера выполните в терминале:
Ubuntu/Debian/Linux Mint
Затем отредактируйте настройки ssh-сервера в файле /etc/ssh/sshd_config
Для этого в терминале выполните:
Также для того чтобы OpenSSH слушал только определенные ip адресса, допустим 192.168.0.50, 192.168.0.51 на порту 777, то просто добавьте следующие строчки:
Ограничить доступ через SSH для пользователей: test test2 test3
OpenSSH сервер может использовать протокол Rlogin для авторизации и может имитировать поведение устаревшей комманды rsh, по этому отключите чтение пользовательских файлов ~/.rhosts и ~/.shosts:
Включите предупреждающий баннер отредактировав следующую строку и создания соотв. файла:
Сохраняйте логи, удостоверьтесь что директива LogLevel имеет значение INFO или DEBUG
Чтобы перезапустить OpenSSH на CentOS, Fedora или RHEL:
В некоторых случаях, запустить сервер можно только таким способом:
Для проверки статуса сервера используем следующую команду
Теперь на компьютер с установленным OpenSSH-server можно зайти так:
Ssh [-p port]
Например:
CentOS / RHEL / Fedora Linux - отключить или удалить OpenSSH можно так:
$ chkconfig sshd off $ yum erase openssh-server |
Основные файлы и папки SSH:
~/.ssh/ - пользовательские конфигурационные директории
~/.ssh/authorized_keys и ~/.ssh/authorized_keys2 - списки публичных ключей (RSA или DSA), которые могут быть использованы для авторизации в пользовательский аккаунт
~/.ssh/known_hosts - ключи серверов
/etc/ssh/sshd_config - конфигурационный файл сервера OpenSSH
/etc/ssh/ssh_config - конфигурационный файл клиента OpenSSH
/etc/nologin - если этот файл существует, то система будет отказываться пускать кого-либо кроме root-пользователя. Лучше удалить и не использовать.
/etc/hosts.allow и /etc/hosts.deny - списки контроля доступа (ACL)
В этой статье мы покажем вам, как установить, настроить и использовать OpenSSH на Ubuntu 16.04. SSH (Secure Shell) является протоколом, который позволяет получить надежный доступ к удаленной машине в то время как OpenSSH представляет собой набор инструментов на основе протокола SSH. Сегодня мы покажем вам, как установить и настроить OpenSSH на с помощью Ubuntu 16.04 в качестве операционной системы.
Установка OpenSSH на Ubuntu 16.04
Во-первых, давайте установим OpenSSH. Обновите индексы пакетов с помощью следующей команды:
Sudo apt-get update
Для установки приложения сервера OpenSSH, а также других связанных пакетов используют следующую команду:
Sudo apt-get install openssh-server
Обратите внимание, что пакет сервера OpenSSH может быть уже установлен в вашей системе, как часть процесса первоначальной установки сервера. Кроме того, вы можете установить клиентское приложение OpenSSH с помощью следующей команды:
Sudo apt-get install openssh-client
Настройка OpenSSH на Ubuntu 16.04
Перед внесением каких – либо изменений в конфигурации OpenSSH, хорошо знать, как управлять услугой OpenSSH на вашем . Для запуска службы вы можете использовать следующую команду:
Sudo systemctl start sshd.service
Чтобы остановить службу, вы можете использовать:
Sudo systemctl stop sshd.service
Чтобы перезапустить службу, вы можете использовать:
Sudo systemctl restart sshd.service
Чтобы проверить состояние службы вы можете использовать:
Sudo systemctl status sshd.service
Чтобы включить службу на время загрузки системы вы можете использовать:
Sudo systemctl enable sshd.service
Чтобы отключить службу на время загрузки системы вы можете использовать:
Sudo systemctl disable sshd.service
После внесения каких-либо изменений в конфигурации OpenSSH вам необходимо перезапустить службу, чтобы изменения вступили в силу.
Основной конфигурационный файл для приложения сервера OpenSSH это /etc/ssh/sshd_config . Убедитесь, что вы создали резервную копию исходной конфигурации перед внесением каких – либо изменений:
Sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
Вы можете редактировать этот файл с помощью текстового редактора по вашему выбору. Первое, что вы можете сделать, это . Откройте файл и найдите строку, которая определяет порт прослушивания:
Измените ее на что-то другое. Например 2022
Port 2022
Сохраните файл и закройте его. Затем перезапустите службу, чтобы изменения вступили в силу.
Теперь вы можете попытаться , используя номер порта, указанный в файле конфигурации сервера OpenSSH. Если вы можете подключиться к серверу через SSH успешно вы можете продолжить со следующим шагом, который является обеспечение OpenSSH.
Безопасный OpenSSH на Ubuntu 16.04
#PermitRootLogin yes
и измените его на:
PermitRootLogin no
Сохраните изменения и перезапустить службу, чтобы изменения вступили в силу. В следующий раз при подключении к серверу вы можете использовать вновь созданного пользователя SUDO.
Чтобы защитить сервер, вы еще можете отключить проверку пароля и . Кроме того, вы можете .
Дополнительные опции конфигурации вы можете проверить с помощью страницы man:
Man sshd_config
или вы можете посетить страницы вручную OpenSSH на https://www.openssh.com/manual.html.
This section of the Ubuntu Server Guide introduces a powerful collection of tools for the remote control of, and transfer of data between, networked computers called OpenSSH . You will also learn about some of the configuration settings possible with the OpenSSH server application and how to change them on your Ubuntu system.
OpenSSH is a freely available version of the Secure Shell (SSH) protocol family of tools for remotely controlling, or transferring files between, computers. Traditional tools used to accomplish these functions, such as telnet or rcp , are insecure and transmit the user"s password in cleartext when used. OpenSSH provides a server daemon and client tools to facilitate secure, encrypted remote control and file transfer operations, effectively replacing the legacy tools.
The OpenSSH server component, sshd , listens continuously for client connections from any of the client tools. When a connection request occurs, sshd sets up the correct connection depending on the type of client tool connecting. For example, if the remote computer is connecting with the ssh client application, the OpenSSH server sets up a remote control session after authentication. If a remote user connects to an OpenSSH server with scp , the OpenSSH server daemon initiates a secure copy of files between the server and client after authentication. OpenSSH can use many authentication methods, including plain password, public key, and Kerberos tickets.
Installation
Installation of the OpenSSH client and server applications is simple. To install the OpenSSH client applications on your Ubuntu system, use this command at a terminal prompt:
sudo apt install openssh-client
To install the OpenSSH server application, and related support files, use this command at a terminal prompt:
sudo apt install openssh-server
The openssh-server package can also be selected to install during the Server Edition installation process.
Configuration
You may configure the default behavior of the OpenSSH server application, sshd , by editing the file /etc/ssh/sshd_config . For information about the configuration directives used in this file, you may view the appropriate manual page with the following command, issued at a terminal prompt:
man sshd_config
There are many directives in the sshd configuration file controlling such things as communication settings, and authentication modes. The following are examples of configuration directives that can be changed by editing the /etc/ssh/sshd_config file.
Prior to editing the configuration file, you should make a copy of the original file and protect it from writing so you will have the original settings as a reference and to reuse as necessary.
Copy the /etc/ssh/sshd_config file and protect it from writing with the following commands, issued at a terminal prompt:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original sudo chmod a-w /etc/ssh/sshd_config.original
The following are examples of configuration directives you may change:
To set your OpenSSH to listen on TCP port 2222 instead of the default TCP port 22, change the Port directive as such:
To have sshd allow public key-based login credentials, simply add or modify the line:
PubkeyAuthentication yes
If the line is already present, then ensure it is not commented out.
To make your OpenSSH server display the contents of the /etc/issue.net file as a pre-login banner, simply add or modify the line:
Banner /etc/issue.net
In the /etc/ssh/sshd_config file.
After making changes to the /etc/ssh/sshd_config file, save the file, and restart the sshd server application to effect the changes using the following command at a terminal prompt:
sudo systemctl restart sshd.service
Many other configuration directives for sshd are available to change the server application"s behavior to fit your needs. Be advised, however, if your only method of access to a server is ssh , and you make a mistake in configuring sshd via the /etc/ssh/sshd_config file, you may find you are locked out of the server upon restarting it. Additionally, if an incorrect configuration directive is supplied, the sshd server may refuse to start, so be extra careful when editing this file on a remote server.
Мы разобрались, что такое SSH и в чем ее преимущества, также мы реализовали самый простой пример SSH- сервера и клиента.
Сегодня я расскажу про более детальную настройку SSH- сервера.
Как гласит известная фраза, «в Linux все есть файл», поэтому для настройки SSH- сервера необходимо и достаточно отредактировать один конфигурационный файл. Его полный путь — /etc/ssh/sshd_config . Для редактирования откроем этот файл с правами суперпользователя любым текстовым редактором.
Перед редактированием сделаем на всякий случай backup файла:
Sudo cp /etc/ssh/sshd_config{,.bak}
Теперь посмотрим его содержимое:
Sudo nano /etc/ssh/sshd_config
После каждого изменения этого файла необходимо перезапустить ssh- сервер для применения наших изменений.
Как мы видим, здесь довольно много параметров, будем разбираться постепенно с каждым из них.
Port
Здесь прописывается, какой порт будет слушать наш сервер. По умолчанию он слушает 22 порт TCP/IP . Интересный факт, что можно указать несколько портов. Например:
ListenAddress
Общий вид настройки можно записать так:
ListenAddress host | IPv4_addr | IPv6_addr ListenAddress :port
Указывает сетевой адрес, на котором будет «слушать» сервер.
Если на сервере есть несколько сетевых интерфейсов, которые настроены на использования разных IP-
адресов, то вы можете ограничить доступ по этому параметру.
К примеру, на сервере следующие 4
сетевых интерфейса:
Eth0 – 192.168.0.1 eth1 – 192.168.0.2 eth2 – 192.168.0.3 eth3 – 192.168.0.4
По умолчанию ssh- сервер находится в состоянии ожидания подключения на всех IP- адресах. Если хотите, чтобы пользователи могли авторизовываться только на интерфейсах 2 и 3 , то следует сделать так:
ListenAddress 192.168.0.2 ListenAddress 192.168.0.3
Здесь можно также указать порт. Например:
ListenAddress 192.168.0.2:222
Если порт не задан, ssh
будет слушать на этом адресе и
на порту, указанному в опции Port.
Если вы будете использовать ListenAddress
не указывая порт, то опция Port
должна предшествовать опции ListenAddress.
Если вообще не указывать ListenAddress,
то по умолчанию сервер слушает на всех локальных адресах.
Address Family
Указывает, какое семейство IP
адресов должно быть использовано сервисом ssh
. Возможные варианты:
“any”
— любые
“inet”
(только IPv4
)
“inet6”
(только IPv6
)
По умолчанию — “any”.
Имеет смысл по возможности ограничить семейство обрабатываемых адресов реально используемыми, т. е. если вы используете только IPv4 - отключите IРv6 , и наоборот.
Например, для разрешения IPv4 и запрета IPv6:
AddressFamily inet
Protocol
ssh может работать с протоколами SSH1 и SSH2. При этом использование небезопасного SSH1 крайне не рекомендуется. Заставить ssh работать только с протоколом SSH2 можно так:
Protocol 2
PermitRootLogin
По умолчанию зайти на удаленный сервер под пользователем root никто не запрещает. Но это не совсем безопасно. В место этого более правильно будет авторизовываться под пользовательской учетной записью и повышать свои привилегии с помощью команды ‘su -‘, либо использовать ‘sudo’.
Если в вашей организации несколько системных администраторов и все они подключаются к серверу под суперпользователем, то не всегда можно узнать кто из администраторов находится на сервере. Поэтому после отключения возможности авторизации напрямую под пользователем root,
системные администраторы сначала будут заходить под своей учетной записью и только после этого получать привилегии суперпользователя; это облегчить аудит сервера и действий, которые производят сисадмины.
Для отключения вышеописанной функции следует отключить параметр PermitRootLogin
, установив значение “no”.
PermitRootLogin no
PermitEmptyPasswords
Блокируем пустые пароли
PermitEmptyPasswords no
AllowUsers, AllowGroups
По умолчанию авторизоваться может любой пользователь сервера. Лучше ограничить круг пользователей, которым разрешен доступ к ssh.
Это может быть полезно, когда вы создаете некоторое количество пользователей системе, но разрешить доступ по ssh
хотите только некоторым.
Для этого в конфигурационный файл sshd_config следует добавить определенных пользователей, существующих на сервере. В примере ниже это пользователи john, peter и michael, которым разрешен вход на сервер. Имя пользователей разделены пробелами.
AllowUsers john peter michael
При добавлении всех пользователей, которые присутствуют в какой-либо опроеделенной групппе следует указать так, как это представлено на примере ниже. Группы пользователей, которым разрешен вход на сервер разделены также пробелом.
AllowGroups developers administrators
DenyUsers, DenyGroups
В противовес параметра, разрешающего доступ определенным пользователям или группам, вы также можете указать пользователей или группы, которым запрещен вход на сервер.
Для этого следует добавить в конфигурационный файл sshd_config
параметр DenyUsers
, в котором через пробел указать тех пользователей, которым запрещен доступ на сервер. На примере ниже это системный apache,
а так же вполне реальный boris.
DenyUsers apache boris
Существует также параметр, с помощью которого можно запретить доступ не отдельным пользователям, а целым группам, в которые входят пользователи. Это параметр DenyGroups и группы указываются тоже через пробел.
DenyGroups marketing hackers
Обратите внимание на то, что можно использовать комбинации запрещающих и разрешающих параметров: DenyUsers , AllowUsers , DenyGroups , и AllowGroups .
LoginGraceTime
При попытке авторизоваться по ssh на сервер у вас есть 2 минуты, чтобы ввести логин и пароль. Если вы этого не сделаете, то соединение с сервером будет разорвано. 2 минуты ожидания авторизационных данных это довольно много. Следует ограничить до 1 минуты или даже до 30 секунд.
Для этого следует изменить параметр LoginGraceTime путем редактирования файла sshd_config, и указать там требуемое время. В примере ниже это 1 минута.
LoginGraceTime 1m
ClientAliveInterval
Рассоединение при отсутствии активности в шелле
После того, как вы успешно авторизовались на сервер, вы можете захотеть сделать так, чтобы можно было разрывать соединение автоматически после того, как прошло некоторое время, в течение которого вы не производили никаких действий в консоли. Это обычно называется временем бездействия.
Используя Bash, вы можете достичь этого, изменив переменную окружения TMOUT .
В OpenSSH же это достигается путем комбинации параметров ClientAliveCountMax и ClientAliveInterval в конфигурационном файле sshd_config.
- ClientAliveCountMax — указывает максимальное количество checkalive сообщений, отсылаемых ssh- сервером, при которых он не получает какой-либо ответ от ssh- клиента. По умолчанию это 3.
- ClientAliveInterval — указывает время ожидания (таймаут) в секундах. После указанного времени ssh- сервер отошлет checkalive сообщение клиенту, ожидая от него ответ (response) . По умолчанию — это 0, то есть сервер не будет отсылать сообщения для проверки.
Для того, чтобы ваш ssh- клиент автоматически отключался после 10 минут (600 секунд), следует внести изменения в конфигурационный файл sshd_config следующим образом:
ClientAliveInterval 600 ClientAliveCountMax 0
На этом пока все. В принципе, я думаю, этого уже достаточно для хорошей настройки и улучшения безопасности ssh. В следующей части мы разберем еще некоторые параметры ssh- сервера и, может, успеем обсудить аутентификацию на основе ключей.
Всем удачи и до скорых встреч на нашем блоге!