Разное

Ssh enable: How to Enable SSH on Ubuntu & Debian [With Configuration Steps]

Содержание

Установка SSH в Ubuntu | Losst

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

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

Содержание статьи:

Что такое 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 20.04 выполните:

sudo systemctl enable sshd

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

sudo systemctl disable sshd

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

ssh localhost

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

ssh 0.0.0.0

Точно таким способом вы можете получить 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.

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

sudo systemctl restart ssh

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

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

ssh -p 2222 localhost 

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

sudo ufw allow 2222

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

sudo ufw allow 22

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

Выводы

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

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

Оцените статью:

Загрузка…

Как пользоваться SSH | Losst

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 атаку для перебора пароля. Порт задается строчкой:

Port 22

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

Протокол SSH

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

Protocol 2

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

Protocol 2

Рут доступ

По умолчанию 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 user@host

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

Мы привыкли подключаться к удаленному серверу, а уже потом выполнять нужные команды, но на самом деле утилита 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

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

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

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

ssh user@host < local_file.txt

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

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

vi /etc/issue

Welcome!

Смотрим неудачные попытки входа 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, а потом их сразу же на лету распаковывать:

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 последовательности. Чтобы активировать их поддержку добавьте строку:

EscapeChar ~

В файл /etc/ssh/ssh_config. Теперь, чтобы разорвать SSH соединение достаточно нажать Enter и набрать:

~.

Другие управляющие символы можно узнать нажав:

~?

Туннели SSH

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

$ ssh -L локальный_порт:удаленный_адрес:удаленный_порт пользователь@сервер

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

$ ssh -N -L 5555:127.0.0.1:3306 root@losst-1

Опция -N сообщает, что команду на удалённой машине выполнять не нужно. Локальный порт — 5555, поскольку сервер баз данных слушает на локальном интерфейсе удалённой машины, то и здесь надо указывать адрес 127.0.0.1. А порт MySQL по умолчанию 3306. Если же вы хотите чтобы локальный сервис был доступен на удалённой машине, то следует использовать опцию -R:

$ ssh -N -R 5555:127.0.0.1:3306 root@losst-1

Теперь локальная база данных на порту 3306 будет доступна на удалённом сервере при обращении к порту 5555.

Выводы

Теперь вы знаете как пользоваться SSH. Как видите, технология SSH позволяет сделать намного больше чем можно предположить с первого взгляда, и это еще далеко не все. Какие интересные возможности SSH используете вы при повседневной работе? Поделитесь в комментариях!

Оцените статью:

Загрузка…

Как включить SSH в Ubuntu 20.04

Secure Shell (SSH) – это сетевой протокол, используемый для безопасного соединения между клиентом и сервером. Каждое взаимодействие между сервером и клиентом шифруется.

В этой статье объясняется, как включить SSH на компьютере с Ubuntu.

Включение SSH позволит вам удаленно подключаться к вашей системе и выполнять административные задачи. Вы также сможете безопасно передавать файлы через scp и sftp.

Включение SSH в Ubuntu

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

Выполните следующие действия как пользователь root или пользователь с привилегиями sudo, чтобы установить и включить SSH в вашей системе Ubuntu:

  1. Откройте терминал с помощью Ctrl+Alt+T и установите пакет openssh-server:
    sudo apt update
    sudo apt install openssh-server

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

  2. После завершения установки служба SSH запустится автоматически. Вы можете проверить, работает ли SSH, набрав:
    sudo systemctl status ssh

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

    ● ssh.service - OpenBSD Secure Shell server
        Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
        Active: active (running) since Mon 2020-06-01 12:34:00 CEST; 9h ago
    ...
    

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

  3. Ubuntu поставляется с утилитой настройки брандмауэра под названием UFW. Если в вашей системе включен брандмауэр , обязательно откройте порт SSH:
    sudo ufw allow ssh

Все! Теперь вы можете подключиться к вашей системе Ubuntu через SSH с любого удаленного компьютера. В системах Linux и macOS клиенты SSH установлены по умолчанию. Чтобы подключиться с компьютера под управлением Windows, используйте SSH-клиент, например PuTTY.

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

Чтобы подключиться к вашей машине с Ubuntu через локальную сеть, вызовите команду ssh, а затем имя пользователя и IP-адрес в следующем формате:

ssh username@ip_address

Убедитесь, что вы поменяли имя пользователя username и IP-адрес ip_address компьютера с Ubuntu, на котором вы установили SSH.

Если вы не знаете свой IP-адрес, вы можете легко найти его с помощью команды ip:

ip a

Найдя IP-адрес, войдите на удаленный компьютер, выполнив следующую команду ssh:

ssh [email protected]

Когда вы подключаетесь в первый раз, вы увидите следующее сообщение:

The authenticity of host '10.0.2.15 (10.0.2.15)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?

Введите yes и вам будет предложено ввести пароль.

Warning: Permanently added '10.0.2.15' (ECDSA) to the list of known hosts.
[email protected]'s password:

После того, как вы введете пароль, вас встретит сообщение по умолчанию Ubuntu:

Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
...

Вы вошли в систему на своей машине с Ubuntu.

Подключение к SSH после NAT

Чтобы подключиться к домашней машине Ubuntu через Интернет, вам необходимо знать ваш публичный IP-адрес и настроить маршрутизатор на прием данных через порт 22 и отправку их в систему Ubuntu, где работает SSH.

Для того, чтобы определить публичный IP – адрес компьютера , который вы пытаетесь SSH к, просто перейдите по следующей ссылке: https://api.ipify.org.

Когда дело доходит до настройки переадресации портов , у каждого маршрутизатора есть свой способ настройки переадресации портов. Вы должны проконсультироваться со своей документацией маршрутизатора о том, как настроить переадресацию портов. Короче говоря, вам нужно ввести номер порта, куда будут поступать запросы (по умолчанию SSH-порт – 22) и частный IP-адрес, который вы нашли ранее (с помощью ip aкоманды) компьютера, на котором работает SSH.

Найдя IP-адрес и настроив маршрутизатор, вы можете войти в систему, набрав:

ssh username@public_ip_address

Если вы подключаете свою машину к Интернету, рекомендуется предпринять некоторые меры безопасности. Наиболее простой способ – настроить маршрутизатор на прием трафика SSH через нестандартный порт и перенаправить его на порт 22 на компьютере, на котором работает служба SSH.

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

Отключение SSH в Ubuntu

Чтобы отключить сервер SSH в вашей системе Ubuntu, просто остановите службу SSH, выполнив:

sudo systemctl disable --now ssh

Позже, чтобы включить его, введите:

sudo systemctl enable --now ssh

Вывод

Мы показали вам, как установить и включить SSH на вашем Ubuntu 20.04. Теперь вы можете войти на свой компьютер и выполнять повседневные задачи системного администратора через командную строку.

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

Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Установка и настройка SSH Сервера в Линукс

Secure Shell, т. е. SSH – протокол, обеспечивающий защищённые соединения и передачу данных между двумя удалёнными компьютерами. Изначально создавался на замену таким системам как rlogin и rcp. Как понятно из полного названия протокола, система SSH позволяет соединяться и управлять удалённым узлом (компьютером, маршрутизатором и т. д.), при этом защищая весь передаваемый трафик с помощью высоконадёжного шифрования.
SSH широко применяется администраторами серверов для их настройки и управления, да и обычные продвинутые пользователи — владельцы, например, сайтов или виртуальных серверов активно используют SSH для подключения к своей учётной записи на хостинге и использования командной оболочки сервера.
Сразу после окончания разработки система SSH стала активно трансформироваться в закрытый коммерческий продукт в виде версии SSh3. Но благодаря сообществу GNU версии протокола SSh2 и SSh3 были реализованы в виде открытого и свободно распространяемого ПО openSSH. В Linux-системах используется именно этот метапакет.
Метапакет SSH базово включает в себя сервер SSH (sshd) в качестве програмы-демона, а также несколько утилит: ssh – удаленная регистрация и выполнение команд, scp – передача файлов и ssh-keygen – для генерации пар SSH-ключей.

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

Как уже говорилось система ssh в Linux-системах распространяется в виде составного метапакета, поэтому для установки всех требуемых утилит ssh нужно выполнить всего одну команду:
В Ubuntu

$ sudo apt-get install ssh

В CentOS

$ yum -y install openssh-server openssh-clients

После чего начнется процесс установки

Как видно, менеджер пакетов сам распознает все зависимые и связанные пакеты и установит их. Также, по завершению установки, автоматически будет запущен SSH-сервер в режиме демона. Это можно проверить командой:
$ systemctl status sshd
или:
$ service sshd status даст тот же вывод. Теперь сервер работает с базовыми настройками по-умолчанию.

Настройка SSH

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

cat /etc/ssh/sshd_config

В первую очередь следует обратить внимание на следующие параметры: Port, AddressFamily, ListenAddress. Первый глобально задаёт номер порта, через который будет работать соединение и если оставить его стандартным, т. е. 22, то велика вероятность, что он будет слишком часто сканироваться роботами.
Примечание: для задания активации параметра необходимо раскомментировать соответствующую строку — убрать символ «#» в её начале.
Второй параметр задаёт семейство используемых IP-адресов — IPv4 и IPv6. Если, к примеру, используются только адреса IPv4, то очень рекомендуется установить для параметра

AddressFamily значение inet:
AddressFamily inet

Для адресов семейства IPv6 используется значение inet6.
Параметр ListenAddress позволяет задавать порты для отдельных сетевых интерфейсов:

ListenAddress 10.24.205.75:2123
ListenAddress 10.24.205.76:2124

Поскольку реализация openSSH позволяет работать с протоколами SSh2 и SSh3, то разумно отключить использование SSh2, т. к. эта версия является устаревшей. Работа по SSh2 крайне не рекомендуется: Protocol 2
Очень полезным является параметр, позволяющий проводить авторизацию и шифрование трафика с помощью специальных SSH-ключей:

PubkeyAuthentication yes

Следует заметить, что в таком случае серверу необходимо явно указывать, где хранятся открытые ключи пользователей. Это может быть как один общий файл для хранения ключей всех пользователей (обычно это файл etc/.ssh/authorized_keys), так и отдельные для каждого пользователя ключи. Второй вариант предпочтительнее в силу удобства администрирования и повышения безопасности:
AuthorizedKeysFile etc/ssh/authorized_keys # Для общего файла
AuthorizedKeysFile %h/.ssh/authorized_keys # Файл -> пользователь
Во втором варианте благодаря шаблону автоподстановки с маской «%h» будет использоваться домашний каталог пользователя.
Важно также отключать парольный доступ:

PasswordAuthentication no

Или же, в случае, если всё-таки необходимо использовать доступ по паролю, то обязательно нужно отключать авторизацию по пустому паролю:

PermitEmptyPasswords no

Для указания разрешённых или запрещённых пользователей и групп служат директивы DenyUsers, AllowUsers, DenyGroups, и AllowGroups. Значениями для них являются списки имён, разделяемых пробелами, например:

DenyUsers fred john
AllowGroups root clients administrators

Следует также отключать root-доступ:

PermitRootLogin no

Иногда, когда следует задавать мультисерверную конфигурацию, очень удобно использовать алиасы (Aliases), что позволяет настроить сразу несколько режимов доступа (с разными хостами, портами и т. д.) и использовать их, указывая при этом конкретный алиас:

$ ssh alias_name

Настройки для алиасов хранятся либо глобально в /etc/ssh/ssh_config, либо раздельно для пользователей в ~/.ssh/config. Здесь нужно не спутать с ssh_config! Пример:

Host your_alias
Port your_ssh_port
HostName 0.0.0.0 # IP или имя хоста
User your_user_name

Для применения сделанных настроек необходим перезапуск SSH-сервера:

$ systemctl restart sshd

или:

$ service sshd restart

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

$ ssh user_name@host_name

где user_name – имя пользователя в системе, host_name – имя узла, к которому производится подключение, например:

$ ssh fred@fredwebserver

При этом утилита ssh запросит (в зависимости от настроек сервера) логин, пароль или парольную фразу для разблокировки приватного ключа пользователя.
В случае авторизации по ключу, должна быть предварительно сгенерирована пара SSH-ключей — открытый, который хранится на стороне сервера, обычно в файле .ssh/authorized_keys в домашнем каталоге пользователя, и закрытый — используется для авторизации клиента и хранится, как правило, в каталоге .ssh/ домашней директории пользователя. Открытый ключ представляет собой «цифровой слепок» закрытого ключа благодаря которому сервер «знает», кто «свой», а кто «чужой».
Для генерации ключей используется утилита ssh-keygen:

$ ssh-keygen

Утилита предложит выбрать расположение ключей (лучше всё оставить по-умолчанию), обычно это каталог ~/.ssh/, ввести парольную фразу для закрытого ключа. После чего будут сгенерированы открытый ключ id_rsa.pub и закрытый — id_rsa. Теперь нужно скопировать открытый ключ, т. е. «слепок» закрытого на сервер. Проще всего этого можно добиться командой:

ssh-copy-id -i ~/.ssh/id_rsa.pub user_name@host_name

Теперь можно выполнить подключение командой ssh и запустить защищённый сеанс удалённого управления.
Важно заметить, что использование сгенерированных openSSH-ключей несовместимо с PPK-форматом, используемым по-умолчанию в таких комплексах как PuTTY. Поэтому необходимо конвертировать имеющиеся openSSH-ключи в формат PPK. Удобнее всего это делать с помощью утилиты PuTTY – puttygen.exe.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Технология SSH (Secure Shell) позволяет проводить безопасное удаленное управление компьютером через защищенное соединение. SSH производит шифровку всех передаваемых файлов, включая пароли, а также передает совершенно любой сетевой протокол. Для корректной работы инструмента его необходимо не только установить, но еще и настроить. Именно о произведении главной конфигурации мы и хотели бы поговорить в рамках данной статьи, взяв за пример последнюю версию операционной системы Ubuntu, на которой будет располагаться сервер.

Настраиваем SSH в Ubuntu

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

Подробнее: Установка SSH-server в Ubuntu

Создание пары ключей RSA

В только что установленном SSH еще нет заданных ключей для осуществления подключения от сервера к клиенту и наоборот. Все эти параметры необходимо задать вручную сразу же после добавления всех компонентов протокола. Пара ключей работает с помощью алгоритма RSA (сокращение от фамилий разработчиков Rivest, Shamir и Adleman). Благодаря этой криптосистеме через специальные алгоритмы производится шифрование ключей. Для создания пары открытых ключей вам нужно лишь ввести соответствующие команды в консоль и следовать появившимся инструкциям.

  1. Перейдите к работе с «Терминалом» любым удобным методом, например, открыв его через меню или комбинацию клавиш Ctrl + Alt + T.
  2. Введите команду ssh-keygen, а затем нажмите на клавишу Enter.
  3. Будет предложено создать файл, куда сохранятся ключи. Если желаете оставить их в расположении, выбранном по умолчанию, просто нажмите на Enter.
  4. Открытый ключ может быть защищен кодовой фразой. Если хотите использовать эту опцию, в появившейся строке напишите пароль. Вводимые символы при этом отображаться не будут. В новой строке потребуется его повторить.
  5. Далее вы увидите уведомление о том, что ключ был сохранен, а также сможете ознакомиться с его случайным графическим изображением.

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

Копирование открытого ключа на сервер

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

Вариант 1: Команда ssh-copy-id

Команда ssh-copy-id встроена в операционную систему, поэтому для ее выполнения не нужно устанавливать никаких дополнительных компонентов. Соблюдайте простой синтаксис, чтобы скопировать ключ. В «Терминале» необходимо ввести ssh-copy-id username@remote_host, где username@remote_host — имя удаленного компьютера.

При первом подключении вы получите уведомление текстом:

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

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

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Укажите пароль от удаленного хоста, чтобы утилита смогла войти в него. Инструмент будет копировать данные из файла публичного ключа ~/.ssh/id_rsa.pub, а после этого на экране появится сообщение:

Number of key(s) added: 1

Now try logging into the machine, with: «ssh ‘[email protected]′»
and check to make sure that only the key(s) you wanted were added.

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

Вариант 2: Копирование открытого ключа через SSH

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

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys".

При появлении сообщения

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

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

Вариант 3: Ручное копирование открытого ключа

В случае отсутствия доступа к удаленному компьютеру через SSH-сервер, все описанные выше действия выполняются вручную. Для этого сначала узнается информация о ключе на серверном ПК через команду cat ~/.ssh/id_rsa.pub.

На экране будет отображена примерно такая строка: ssh-rsa + ключ в виде набора символов== demo@test. После этого перейдите к работе на удаленное устройство, где создайте новую директорию через mkdir -p ~/.ssh. В ней дополнительно создается файл authorized_keys. Далее вставьте туда ключ, который вы узнали ранее через echo + строка публичного ключа >> ~/.ssh/authorized_keys. После этого можно пробовать проводить аутентификацию с сервером без использования паролей.

Аутентификация на сервере через созданный ключ

В предыдущем разделе вы узнали о трех методах копирования ключа удаленного компьютера на сервер. Такие действия позволят подключиться без использования пароля. Выполняется эта процедура через командную строку путем ввода shh ssh username@remote_host, где username@remote_host — имя пользователя и хост нужного компьютера. При первом подключении вы будете уведомлены о незнакомом соединении и можете продолжить, выбрав вариант yes.

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

Отключение аутентификации по паролю

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

  1. В «Терминале» откройте конфигурационный файл через редактор с помощью команды sudo gedit /etc/ssh/sshd_config.
  2. Найдите строку «PasswordAuthentication» и уберите знак # в начале, чтобы раскомментировать параметр.
  3. Измените значение на no и сохраните текущую конфигурацию.
  4. Закройте редактор и перезапустите сервер sudo systemctl restart ssh.

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

Настройка стандартного firewall

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

  1. Откройте список профилей firewall через команду sudo ufw app list.
  2. Введите пароль от учетной записи для отображения информации.
  3. Вы увидите лист доступных приложений, среди них должен находиться и OpenSSH.
  4. Теперь следует разрешить соединения через SSH. Для этого добавим его в список разрешенных профилей с помощью sudo ufw allow OpenSSH.
  5. Включите firewall, обновив правила, sudo ufw enable.
  6. Для убеждения в том, что соединения разрешены, следует прописать sudo ufw status, после чего вы увидите состояние сети.

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

Мы рады, что смогли помочь Вам в решении проблемы.

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ

Как подключиться по SSH | Losst

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

Если вы покупаете VPS сервер или продвинутый хостинг, обычно в письме вместе с другими данными авторизации есть данные доступа по SSH. В этой статье мы рассмотрим как подключиться по SSH к серверу из Linux или Windows.

Содержание статьи:

Что такое SSH?

Поскольку эта статья рассчитана именно на новичков, то перед тем, как перейти дальше давайте подробнее разберемся что из себя представляет SSH. Исторически так сложилось что на большинстве серверов используется операционная система Linux, во многом этому посодействовала ее бесплатность. Графический интерфейс на серверах Linux не используется для экономии ресурсов, поэтому единственным способом администрирования сервера остается командная строка.

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

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

Для подключения по SSH нам необходимо знать такие данные:

  • ip адрес сервера, к которому мы собираемся подключится;
  • порт, на котором ожидает подключения SSH сервер, по умолчанию используется 22, но в целях безопасности порт подключения ssh часто изменяют;
  • имя и пароль пользователя на удаленном сервере.

Больше ничего не нужно, обычно эти данные присылают в письме вместе с описанием VPS. Теперь перейдем к практике.

1. Подключение через SSH в Linux

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

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

Это самый простой вариант, если вам также нужно задать порт, используйте опцию -p:

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

Чтобы выполнить подключение по SSH Linux нажмите Ctrl+Alt+T для открытия терминала и наберите команду, заменив нужные значения:

ssh [email protected]

Или, с нестандартным портом:

ssh [email protected] -p 2223

Если ip_адрес и порт правильные, то на следующем шаге программа попросит у вас ввести пароль:

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

Теперь вы подключены, и все вводимые далее команды будут выполнены на удаленном сервере:

Если же произошла ошибка и IP адрес или порт введены неверно, то вы получите ошибку Connection Refused:

Просто убедитесь что порт введен верно. Если это ваш сервер, то, возможно на нем еще нужно разрешить подключение SSH в брандмауэре. В Ubuntu/Debian для этого на удаленном сервере выполните:

sudo ufw allow 22/tcp

А в CentOS/Fedora:

firewall-cmd --permanent --zone=public --add-port=22/tcp

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

Теперь вы знаете как подключиться по ssh linux и решить проблемы с подключением. А теперь перейдем к Windows.

2. Подключение через SSH в Windows

Раньше подключение по SSH из Windows выполнялось только с помощью сторонних утилит, например PuTTY. Но в Windows 10 был добавлен встроенный OpenSSH клиент и работает он точно так же, как и в Linux. По умолчанию этот компонент не активирован. Для его установки откройте Параметры -> Приложения:

Затем выберите Управление дополнительными компонентами:

Здесь нажмите добавить новый компонент и в открывлемся меню выберите OpenSSH Client и нажмите Устанвоить:

Дальше вернитесь назад и дождитесь завершения установки. После того, как SSH клиент будет установлен нужно обязательно перезагрузить компьютер.

После перезагрузки нажмите Win+R чтобы открыть окно запуска команд и наберите в нем cmd:

Далее нажмите Enter. Перед вами откроется командная строка Windows. Здесь можно использовать утилиту ssh. Синтаксис у нее абсолютно такой же, как и для Linux:

ssh имя_пользователя@айпи_адрес -p порт

Например, такой командой можно подключится по SSH к Raspberry Pi, который находится в вашей локальной сети по адресу 192.168.1.5:

ssh [email protected]

Утилита предложит добавить устройство в список известных:

Затем предложит ввести пароль:

Все следующие команды будут выполняться уже на Raspberry Pi или другой удаленной машине, к которой вы подключились.

Теперь подключиться к серверу по ssh из этой операционной системы также просто как и из Linux.

Выводы

В этой статье мы рассмотрели как выполняется подключение к серверу по SSH из Linux или Windows. Как видите, это очень просто. А дальше, для работы с удаленным сервером вам понадобятся команды терминала Linux.

Памятка пользователям ssh / Хабр

abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

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

Оглавление:

  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)

Теория в нескольких словах: ssh может авторизоваться не по паролю, а по ключу. Ключ состоит из открытой и закрытой части. Открытая кладётся в домашний каталог пользователя, «которым» заходят на сервер, закрытая — в домашний каталог пользователя, который идёт на удалённый сервер. Половинки сравниваются (я утрирую) и если всё ок — пускают. Важно: авторизуется не только клиент на сервере, но и сервер по отношению к клиенту (то есть у сервера есть свой собственный ключ). Главной особенностью ключа по сравнению с паролем является то, что его нельзя «украсть», взломав сервер — ключ не передаётся с клиента на сервер, а во время авторизации клиент доказывает серверу, что владеет ключом (та самая криптографическая магия).

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

Свой ключ можно сгенерировать с помощью команды ssh-keygen. Если не задать параметры, то он сохранит всё так, как надо.

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

Сменить пароль на ключ можно с помощью команды ssh-keygen -p.

Структура ключа

(если на вопрос про расположение ответили по-умолчанию).
~/.ssh/id_rsa.pub — открытый ключ. Его копируют на сервера, куда нужно получить доступ.
~/.ssh/id_rsa — закрытый ключ. Его нельзя никому показывать. Если вы в письмо/чат скопипастите его вместо pub, то нужно генерировать новый ключ. (Я не шучу, примерно 10% людей, которых просишь дать ssh-ключ постят id_rsa, причём из этих десяти процентов мужского пола 100%).

Копирование ключа на сервер

В каталоге пользователя, под которым вы хотите зайти, если создать файл ~/.ssh/authorized_keys и положить туда открытый ключ, то можно будет заходить без пароля. Обратите внимание, права на файл не должны давать возможность писать в этот файл посторонним пользователям, иначе ssh его не примет. В ключе последнее поле — user@machine. Оно не имеет никакого отношения к авторизации и служит только для удобства определения где чей ключ. Заметим, это поле может быть поменяно (или даже удалено) без нарушения структуры ключа.

Если вы знаете пароль пользователя, то процесс можно упростить. Команда ssh-copy-id user@server позволяет скопировать ключ не редактируя файлы вручную.

Замечание: Старые руководства по ssh упоминают про authorized_keys2. Причина: была первая версия ssh, потом стала вторая (текущая), для неё сделали свой набор конфигов, всех это очень утомило, и вторая версия уже давным давно переключилась на версии без всяких «2». То есть всегда authorized_keys и не думать о разных версиях.

Если у вас ssh на нестандартном порту, то ssh-copy-id требует особого ухищрения при работе: ssh-copy-id '-p 443 user@server' (внимание на кавычки).

Ключ сервера

Первый раз, когда вы заходите на сервер, ssh вас спрашивает, доверяете ли вы ключу. Если отвечаете нет, соединение закрывается. Если да — ключ сохраняется в файл ~/.ssh/known_hosts. Узнать, где какой ключ нельзя (ибо несекьюрно).

Если ключ сервера поменялся (например, сервер переустановили), ssh вопит от подделке ключа. Обратите внимание, если сервер не трогали, а ssh вопит, значит вы не на тот сервер ломитесь (например, в сети появился ещё один компьютер с тем же IP, особо этим страдают всякие локальные сети с 192.168.1.1, которых в мире несколько миллионов). Сценарий «злобной man in the middle атаки» маловероятен, чаще просто ошибка с IP, хотя если «всё хорошо», а ключ поменялся — это повод поднять уровень паранойи на пару уровней (а если у вас авторизация по ключу, а сервер вдруг запросил пароль — то паранойю можно включать на 100% и пароль не вводить).

Удалить известный ключ сервера можно командой ssh-keygen -R server. При этом нужно удалить ещё и ключ IP (они хранятся раздельно): ssh-keygen -R 127.0.0.1.

Ключ сервера хранится в /etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_rsa_key.pub. Их можно:

а) скопировать со старого сервера на новый.

б) сгенерировать с помощью ssh-keygen. Пароля при этом задавать не надо (т.е. пустой). Ключ с паролем ssh-сервер использовать не сможет.

Заметим, если вы сервера клонируете (например, в виртуалках), то ssh-ключи сервера нужно обязательно перегенерировать.

Старые ключи из know_hosts при этом лучше убрать, иначе ssh будет ругаться на duplicate key.


Передача файлов на сервер иногда может утомлять. Помимо возни с sftp и прочими странными вещами, ssh предоставляет нам команду scp, которая осуществляет копирование файла через ssh-сессию.

scp path/myfile [email protected]:/full/path/to/new/location/

Обратно тоже можно:
scp [email protected]:/full/path/to/file /path/to/put/here

Fish warning: Не смотря на то, что mc умеет делать соединение по ssh, копировать большие файлы будет очень мучительно, т.к. fish (модуль mc для работы с ssh как с виртуальной fs) работает очень медленно. 100-200кб — предел, дальше начинается испытание терпения. (Я вспомнил свою очень раннюю молодость, когда не зная про scp, я копировал ~5Гб через fish в mc, заняло это чуть больше 12 часов на FastEthernet).

Возможность копировать здорово. Но хочется так, чтобы «сохранить как» — и сразу на сервер. И чтобы в графическом режиме копировать не из специальной программы, а из любой, привычной.

Так тоже можно:

Теория: модуль fuse позволяет «экспортировать» запросы к файловой системе из ядра обратно в userspace к соответствующей программе. Это позволяет легко реализовывать «псевдофайловые системы». Например, мы можем предоставить доступ к удалённой файловой системе через ssh так, что все локальные приложения (за малым исключением) не будут ничего подозревать.

Собственно, исключение: O_DIRECT не поддерживается, увы (это проблема не sshfs, это проблема fuse вообще).

Использование: установить пакет sshfs (сам притащит за собой fuse).

Собственно, пример моего скрипта, который монтирует desunote.ru (размещающийся у меня на домашнем комьютере — с него в этой статье показываются картинки) на мой ноут:

#!/bin/bash
sshfs desunote.ru:/var/www/desunote.ru/ /media/desunote.ru -o reconnect

Делаем файл +x, вызываем, идём в любое приложение, говорим сохранить и видим:

Параметры sshfs, которые могут оказаться важными: -o reconnect (говорит пытаться пересоединиться вместо ошибок).

Если вы много работаете с данными от рута, то можно (нужно) сделать idmap:

-o idmap=user. Работает она следующим образом: если мы коннектимся как пользователь pupkin@server, а локально работаем как пользователь vasiliy, то мы говорим «считать, что файлы pupkin, это файлы vasiliy». ну или «root», если мы коннектимся как root.

В моём случае idmap не нужен, так как имена пользователей (локальное и удалённое) совпадают.

Заметим, комфортно работать получается только если у нас есть ssh-ключик (см. начало статьи), если нет — авторизация по паролю выбешивает на 2-3 подключение.

Отключить обратно можно командой fusermount -u /path, однако, если соединение залипло (например, нет сети), то можно/нужно делать это из-под рута: sudo umount -f /path.


ssh может выполнить команду на удалённом сервере и тут же закрыть соединение. Простейший пример:

ssh user@server ls /etc/

Выведет нам содержимое /etc/ на server, при этом у нас будет локальная командная строка.

Некоторые приложения хотят иметь управляющий терминал. Их следует запускать с опцией -t:
ssh user@server -t remove_command

Кстати, мы можем сделать что-то такого вида:
ssh user@server cat /some/file|awk '{print $2}' |local_app

Это нас приводит следующей фиче:

Проброс stdin/out

Допустим, мы хотим сделать запрос к программе удалённо, а потом её вывод поместить в локальный файл

ssh [email protected] command >my_file

Допустим, мы хотим локальный вывод положить удалённо

mycommand |scp — [email protected]:/path/remote_file

Усложним пример — мы можем прокидывать файлы с сервера на сервер: Делаем цепочку, чтобы положить stdin на 10.1.1.2, который нам не доступен снаружи:

mycommand | ssh [email protected] «scp — [email protected]:/path/to/file»

Есть и вот такой головоломный приём использования pipe’а (любезно подсказали в комментариях в жж):

tar -c * | ssh user@server "cd && tar -x"

Tar запаковывает файлы по маске локально, пишет их в stdout, откуда их читает ssh, передаёт в stdin на удалённом сервере, где их cd игнорирует (не читает stdin), а tar — читает и распаковывает. Так сказать, scp для бедных.

Скажу честно, до последнего времени не знал и не использовал. Оказались очень удобными.

В более-менее крупной компании часто оказывается, что имена серверов выглядят так: spb-MX-i3.extrt.int.company.net. И пользователь там не равен локальному. То есть логиниться надо так: ssh [email protected]. Каждый раз печатать — туннельных синдромов не напасёшься. В малых компаниях проблема обратная — никто не думает о DNS, и обращение на сервер выглядит так: ssh [email protected]. Короче, но всё равно напрягает. Ещё большая драма, если у нас есть нестандартный порт, и, например, первая версия ssh (привет цискам). Тогда всё выглядит так: ssh -1 -p 334 [email protected]. Удавиться. Про драму с scp даже рассказывать не хочется.

Можно прописать общесистемные alias’ы на IP (/etc/hosts), но это кривоватый выход (и пользователя и опции всё равно печатать). Есть путь короче.

Файл ~/.ssh/config позволяет задать параметры подключения, в том числе специальные для серверов, что самое важное, для каждого сервера своё. Вот пример конфига:

Host ric
        Hostname ооо-рога-и-копыта.рф
        User Администратор
        ForwardX11 yes
        Compression yes
Host home
        Hostname myhome.dyndns.org
        User vasya
        PasswordAuthentication no

Все доступные для использования опции можно увидеть в man ssh_config (не путать с sshd_config).


По подсказке UUSER: вы можете указать настройки соединения по умолчанию с помощью конструкции Host *, т.е., например:

Host *
User root
Compression yes

То же самое можно сделать и в /etc/ssh/ssh_config (не путать с /etc/ssh/sshd_config), но это требует прав рута и распространяется на всех пользователей.


Собственно, немножко я проспойлерил эту часть в примере конфига выше. ForwardX11 — это как раз оно.

Теория: Графические приложения в юникс обычно используют X-сервер (wayland в пути, но всё ещё не готов). Это означает, что приложение запускается и подключается к X-серверу для рисования. Иными словами, если у вас есть голый сервер без гуя и есть локальный x-сервер (в котором вы работаете), то вы можете дать возможность приложениям с сервера рисовать у вас на рабочем столе. Обычно подключение к удалённом X-серверу — не самая безопасная и тривиальная вещь. SSH позволяет упростить этот процесс и сделать его совсем безопасным. А возможность жать трафик позволяет ещё и обойтись меньшим трафиком (т.е. уменьшить утилизацию канала, то есть уменьшить ping (точнее, latency), то есть уменьшить лаги).

Ключики: -X — проброс X-сервера. -Y проброс авторизации.

Достаточно просто запомнить комбинацию ssh -XYC user@SERVER.

В примере выше (названия компании вымышленные) я подключаюсь к серверу ооо-рога-и-копыта.рф не просто так, а с целью получить доступ к windows-серверу. Безопасность microsoft при работе в сети мы все хорошо знаем, так что выставлять наружу голый RDP неуютно. Вместо этого мы подключаемся к серверу по ssh, а дальше запускаем там команду rdesktop:
ssh ric

rdesktop -k en-us 192.168.1.1 -g 1900x1200

и чудо, окошко логина в windows на нашем рабочем столе. Заметим, тщательно зашифрованное и неотличимое от обычного ssh-трафика.


Когда я оказываюсь в очередной гостинице (кафе, конференции), то местный wifi чаще всего оказывается ужасным — закрытые порты, неизвестно какой уровень безопасности. Да и доверия к чужим точкам доступа не особо много (это не паранойя, я вполне наблюдал как уводят пароли и куки с помощью банального ноутбука, раздающего 3G всем желающим с названием близлежащей кафешки (и пишущего интересное в процессе)).

Особые проблемы доставляют закрытые порты. То джаббер прикроют, то IMAP, то ещё что-нибудь.

Обычный VPN (pptp, l2tp, openvpn) в таких ситуациях не работает — его просто не пропускают. Экспериментально известно, что 443ий порт чаще всего оставляют, причём в режиме CONNECT, то есть пропускают «как есть» (обычный http могут ещё прозрачно на сквид завернуть).

Решением служит socks-proxy режим работы ssh. Его принцип: ssh-клиент подключается к серверу и слушает локально. Получив запрос, он отправляет его (через открытое соединение) на сервер, сервер устанавливает соединение согласно запросу и все данные передаёт обратно ssh-клиенту. А тот отвечает обратившемуся. Для работы нужно сказать приложениям «использовать socks-proxy». И указать IP-адрес прокси. В случае с ssh это чаще всего localhost (так вы не отдадите свой канал чужим людям).

Подключение в режиме sock-proxy выглядит так:

ssh -D 8080 user@server

В силу того, что чужие wifi чаще всего не только фиговые, но и лагливые, то бывает неплохо включить опцию -C (сжимать трафик). Получается почти что opera turbo (только картинки не жмёт). В реальном сёрфинге по http жмёт примерно в 2-3 раза (читай — если вам выпало несчастье в 64кбит, то вы будете мегабайтные страницы открывать не по две минуты, а секунд за 40. Фигово, но всё ж лучше). Но главное: никаких украденных кук и подслушанных сессий.

Я не зря сказал про закрытые порты. 22ой порт закрывают ровно так же, как «не нужный» порт джаббера. Решение — повесить сервер на 443-й порт. Снимать с 22 не стоит, иногда бывают системы с DPI (deep packet inspection), которые ваш «псевдо-ssl» не пустят.

Вот так выглядит мой конфиг:

/etc/ssh/sshd_config:

(фрагмент)

Port 22

Port 443

А вот кусок ~/.ssh/config с ноутбука, который описывает vpn

Host vpn
    Hostname desunote.ru
    User vasya
    Compression yes
    DynamicForward 127.1:8080
    Port 443

(обратите внимание на «ленивую» форму записи localhost — 127.1, это вполне себе законный метод написать 127.0.0.1)


Мы переходим к крайне сложной для понимания части функционала SSH, позволяющей осуществлять головоломные операции по туннелированию TCP «из сервера» и «на сервер».

Для понимания ситуации все примеры ниже будут ссылаться на вот эту схему:

Комментарии: Две серые сети. Первая сеть напоминает типичную офисную сеть (NAT), вторая — «гейтвей», то есть сервер с белым интерфейсом и серым, смотрящим в свою собственную приватную сеть. В дальнейших рассуждениях мы полагаем, что «наш» ноутбук — А, а «сервер» — Б.

Задача: у нас локально запущено приложение, нам нужно дать возможность другому пользователю (за пределами нашей сети) посмотреть на него.

Решение: проброс локального порта (127.0.0.1:80) на публично доступный адрес. Допустим, наш «публично доступный» Б занял 80ый порт чем-то полезным, так что пробрасывать мы будем на нестандартный порт (8080).

Итоговая конфигурация: запросы на 8.8.8.8:8080 будут попадать на localhost ноутбука А.

ssh -R 127.1:80:8.8.8.8:8080 [email protected]

Опция -R позволяет перенаправлять с удалённого (Remote) сервера порт на свой (локальный).

Важно: если мы хотим использовать адрес 8.8.8.8, то нам нужно разрешить GatewayPorts в настройках сервера Б.
Задача. На сервере «Б» слушает некий демон (допустим, sql-сервер). Наше приложение не совместимо с сервером (другая битность, ОС, злой админ, запрещающий и накладывающий лимиты и т.д.). Мы хотим локально получить доступ к удалённому localhost’у.

Итоговая конфигурация: запросы на localhost:3333 на ‘A’ должны обслуживаться демоном на localhost:3128 ‘Б’.

ssh -L 127.1:3333:127.1:3128 [email protected]

Опция -L позволяет локальные обращения (Local) направлять на удалённый сервер.

Задача: На сервере «Б» на сером интерфейсе слушает некий сервис и мы хотим дать возможность коллеге (192.168.0.3) посмотреть на это приложение.

Итоговая конфигурация: запросы на наш серый IP-адрес (192.168.0.2) попадают на серый интерфейс сервера Б.

ssh -L 192.168.0.2:8080:10.1.1.1:80 [email protected]

Вложенные туннели

Разумеется, туннели можно перенаправлять.

Усложним задачу: теперь нам хочется показать коллеге приложение, запущенное на localhost на сервере с адресом 10.1.1.2 (на 80ом порту).

Решение сложно:
ssh -L 192.168.0.2:8080:127.1:9999 [email protected] ssh -L 127.1:9999:127.1:80 [email protected]

Что происходит? Мы говорим ssh перенаправлять локальные запросы с нашего адреса на localhost сервера Б и сразу после подключения запустить ssh (то есть клиента ssh) на сервере Б с опцией слушать на localhost и передавать запросы на сервер 10.1.1.2 (куда клиент и должен подключиться). Порт 9999 выбран произвольно, главное, чтобы совпадал в первом вызове и во втором.

Реверс-сокс-прокси

Если предыдущий пример вам показался простым и очевидным, то попробуйте догадаться, что сделает этот пример:
ssh -D 8080 -R 127.1:8080:127.1:8080 [email protected] ssh -R 127.1:8080:127.1:8080 [email protected]


Если вы офицер безопасности, задача которого запретить использование интернета на сервере 10.1.1.2, то можете начинать выдёргивать волосы на попе, ибо эта команда организует доступ в интернет для сервера 10.1.1.2 посредством сокс-прокси, запущенного на компьютере «А». Трафик полностью зашифрован и неотличим от любого другого трафика SSH. А исходящий трафик с компьютера с точки зрения сети «192.168.0/24» не отличим от обычного трафика компьютера А.


Если к этому моменту попа отдела безопасности не сияет лысиной, а ssh всё ещё не внесён в список врагов безопасности номер один, вот вам окончательный убийца всего и вся: туннелирование IP или даже ethernet. В самых радикальных случаях это позволяет туннелировать dhcp, заниматься удалённым arp-спуфингом, делать wake up on lan и прочие безобразия второго уровня.

Подробнее описано тут: www.khanh.net/blog/archives/51-using-openSSH-as-a-layer-2-ethernet-bridge-VPN.html

(сам я увы, таким не пользовался).

Легко понять, что в таких условиях невозможно никаким DPI (deep packet inspection) отловить подобные туннели — либо ssh разрешён (читай — делай что хочешь), либо ssh запрещён (и можно смело из такой компании идиотов увольняться не ощущая ни малейшего сожаления).

Если вы думаете, что на этом всё, то…… впрочем, в отличие от автора, у которого «снизу» ещё не написано, читатель заранее видит, что там снизу много букв и интриги не получается.

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

Для начала о простом пробросе авторизации.

Повторю картинку:

Допустим, мы хотим подключиться к серверу 10.1.1.2, который готов принять наш ключ. Но копировать его на 8.8.8.8 мы не хотим, ибо там проходной двор и половина людей имеет sudo и может шариться по чужим каталогам. Компромиссным вариантом было бы иметь «другой» ssh-ключ, который бы авторизовывал [email protected] на 10.1.1.2, но если мы не хотим пускать кого попало с 8.8.8.8 на 10.1.1.2, то это не вариант (тем паче, что ключ могут не только поюзать, но и скопировать себе «на чёрный день»).

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

Вызов выглядит так:

ssh -A [email protected] ssh [email protected]

Удалённый ssh-клиент (на 8.8.8.8) может доказать 10.1.1.2, что мы это мы только если мы к этому серверу подключены и дали ssh-клиенту доступ к своему агенту авторизации (но не ключу!).

В большинстве случаев это прокатывает.

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

Есть ещё более могучий метод — он превращает ssh в простой pipe (в смысле, «трубу») через которую насквозь мы осуществляем работу с удалённым сервером.

Главным достоинством этого метода является полная независимость от доверенности промежуточного сервера. Он может использовать поддельный ssh-сервер, логгировать все байты и все действия, перехватывать любые данные и подделывать их как хочет — взаимодействие идёт между «итоговым» сервером и клиентом. Если данные оконечного сервера подделаны, то подпись не сойдётся. Если данные не подделаны, то сессия устанавливается в защищённом режиме, так что перехватывать нечего.

Эту клёвую настройку я не знал, и раскопал её redrampage.

Настройка завязана на две возможности ssh: опцию -W (превращающую ssh в «трубу») и опцию конфига ProxyCommand (опции командной строки, вроде бы нет), которая говорит «запустить программу и присосаться к её stdin/out». Опции эти появились недавно, так что пользователи centos в пролёте.

Выглядит это так (циферки для картинки выше):

.ssh/config:

Host raep
     HostName 10.1.1.2
     User user2
     ProxyCommand ssh -W %h:%p [email protected]

Ну а подключение тривиально: ssh raep.

Повторю важную мысль: сервер 8.8.8.8 не может перехватить или подделать трафик, воспользоваться агентом авторизации пользователя или иным образом изменить трафик. Запретить — да, может. Но если разрешил — пропустит через себя без расшифровки или модификации. Для работы конфигурации нужно иметь свой открытый ключ в authorized_keys как для [email protected], так и в [email protected]

Разумеется, подключение можно оснащать всеми прочими фенечками — прокидыванием портов, копированием файлов, сокс-прокси, L2-туннелями, туннелированием X-сервера и т.д.

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

Как включить SSH в Ubuntu (18.04, 17.04, 16.04, 14.04 и т. Д.) — ThisHosting.Rocks

Наконец-то решили использовать Ubuntu для настольной ОС? Замечательно. О, у вас тоже есть Ubuntu (облачный) сервер? Даже лучше.

Возможно, вы используете некоторые из рекомендуемых нами дистрибутивов Linux для игр. Это руководство будет работать практически с любым дистрибутивом на основе Debian, включая, помимо прочего:

  • Ubuntu 18.04
  • Ubuntu 17.04
  • Ubuntu 16.10
  • Ubuntu 16.04
  • Ubuntu 14.04
  • Любая разновидность Ubuntu, включая Ubuntu MATE, Ubuntu Budgie, Ubuntu GNOME, Kubuntu, Lubuntu, Xubuntu…
  • Debian 6, 7, 8 или любой другой выпуск Debian.

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

Обратите внимание, что у вас, возможно, уже установлен SSH на вашем Ubuntu, поэтому просто попробуйте войти на свой сервер или запустите эту команду, чтобы проверить, работает ли SSH в данный момент:

 ps -aux | grep ssh 

Итак, приступим к нашим инструкциям по установке SSH.Вы также можете установить SSH через графический интерфейс, но где в этом веселье? В любом случае вы уже начали использовать сервер. Итак, вот инструкции, как включить SSH через терминал:

Открыть терминал

Откройте его через меню или просто нажмите Ctrl + Alt + T

Установить OpenSSH

С официального сайта:

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

Другими словами, вам необходимо установить OpenSSH, чтобы вы могли войти на свой сервер.

Установите его, выполнив следующую команду в своем терминале:

 sudo apt-get install openssh-server -y 

После завершения установки на рабочем столе Ubuntu будет включен SSH.

Настроить SSH

Теперь, когда вы установили SSH, вы можете настроить его.Например, изменение порта по умолчанию (рекомендуется из соображений безопасности), отключение входа пользователя «root» и т. Д.

На данный момент мы просто обновим наш порт SSH по умолчанию (22). Сначала откройте файл конфигурации ssh, выполнив следующую команду:

 Судо нано / и т. Д. / SSH / sshd_config 

Если у вас не установлен nano (это текстовый редактор), выполните следующую команду:

 sudo apt-get install nano -y 

Открыв файл, найдите и измените следующую строку:

 # Порт 22 

С

по

 Порт 1337 

Используйте другой номер порта, какой хотите.

Когда вы закончите, сохраните и закройте файл, нажав Ctrl + W , затем Y и нажмите Enter / Return

Перед перезапуском SSH вам необходимо настроить брандмауэр, чтобы разрешить порт, который вы указали ранее. Если вы используете UFW, просто введите:

 sudo ufw разрешить 1337 

Уточните у своего интернет-провайдера и у вашего модема / маршрутизатора (-ов), нужно ли вам разрешить новый порт.

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

 sudo service ssh перезапуск 

И все. Вы сделали.

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

 имя пользователя ssh @ ip -p1337 

Для входа на сервер через SSH прямо из настольного терминала Ubuntu. Конечно, измените «имя пользователя», «ip» и номер порта, который вы используете на своем сервере Ubuntu

.

Для получения дополнительной информации прочтите:

SSH / OpenSSH / Настройка

Сервер OpenSSH

.

Как включить SSH в CentOS 8 — Linux Hint

В этой статье я собираюсь показать вам, как установить клиентские и серверные инструменты SSH на сервер CentOS 8 и как настроить сервер SSH на CentOS 8. Итак, приступим.

Установка клиентского программного обеспечения SSH:

Для подключения к серверу SSH на вашем клиентском компьютере должны быть установлены клиентские программы OpenSSH.

На машине CentOS или RHEL вы можете установить клиентские программы OpenSSH с помощью следующей команды:

$ sudo yum установить openssh-clients

Необходимо установить клиентские программы SSH.В моем случае он уже установлен.

Установка программного обеспечения сервера SSH:

Если вы хотите подключиться к своему серверу CentOS 8 с помощью SSH, тогда на вашем компьютере CentOS 8 должно быть установлено программное обеспечение сервера SSH.

Чтобы установить программное обеспечение сервера SSH на ваш компьютер CentOS 8, выполните следующую команду:

$ sudo yum установить openssh-server

Должен быть установлен пакет сервера OpenSSH. В моем случае он уже установлен.

Управление службой сервера OpenSSH:

После установки программного обеспечения сервера OpenSSH на вашем компьютере с CentOS 8 проверьте, запущена ли служба sshd, с помощью следующей команды:

$ sudo systemctl статус sshd

Как видите, служба sshd активна / работает . Также включен, запускается автоматически при загрузке системы.

Сервер SSH прослушивает все сетевые интерфейсы ( 0.0.0.0 ) на порт 22 по умолчанию.

Если по какой-то причине служба sshd не запущена на вашем компьютере с CentOS 8, вы можете запустить ее вручную с помощью следующей команды:

$ sudo systemctl start sshd

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

$ sudo systemctl включить sshd

Таким же образом, если вы не хотите, чтобы служба SSH автоматически запускалась при загрузке системы (из соображений безопасности), удалите службу sshd из загрузки системы следующим образом:

$ sudo systemctl отключить sshd

Если вы хотите остановить службу sshd после настройки сервера CentOS 8, вы можете сделать это следующим образом:

$ sudo systemctl stop sshd

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

$ sudo systemctl перезапуск sshd

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

Чтобы подключиться к серверу SSH, вам необходимо знать IP-адрес вашего сервера CentOS 8 при установленном программном обеспечении сервера SSH.

Чтобы узнать IP-адрес, выполните следующую команду на своем компьютере с CentOS 8.

Как видите, IP-адрес моей машины с CentOS 8 — 192.168.21.226. Для вас все будет иначе.Так что не забудьте заменить его теперь своим.

Теперь с клиентского компьютера (на котором должны быть установлены клиентские программы SSH) выполните следующую команду для подключения к серверу CentOS 8 с помощью SSH:

$ ssh имя_пользователя @ ip_address

Теперь введите yes и нажмите .

Теперь введите пароль вашего имя_пользователя и нажмите .

Вы должны войти в систему на машине CentOS 8 через SSH.

Теперь вы можете запускать любую команду на сервере CentOS 8 с клиента.

Когда вы закончите, закройте сеанс SSH следующим образом:

Сеанс SSH должен быть закрыт.

Файлы конфигурации SSH:

В CentOS 8 файлы конфигурации сервера и клиента SSH находятся в каталоге / etc / ssh .

Содержимое каталога / etc / ssh показано на снимке экрана ниже.

Здесь ssh_config и ssh_config.d / 05-redhat.conf — это файлы конфигурации клиента SSH.

sshd_config — файл конфигурации сервера SSH. sshd_config файл является нашим основным объектом внимания в этой статье.

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

Для редактирования файла sshd_config вы можете использовать текстовый редактор CentOS 8 по умолчанию vi .

Чтобы открыть файл конфигурации / etc / ssh / sshd_config в текстовом редакторе vi, выполните следующую команду:

$ Судо vi / etc / ssh / sshd_config

Должен быть открыт файл конфигурации.Чтобы изменить файл, нажмите i , чтобы перейти в режим вставки .

По окончании редактирования файла конфигурации нажмите , чтобы вернуться в командный режим .

Если вы хотите сохранить файл и закрыть текстовый редактор vi , введите : wq! и нажмите .

Если вы хотите отменить изменения и закрыть текстовый редактор vi , введите : q! и нажмите .

Изменение порта сервера SSH:

Если вы хотите изменить порт сервера SSH с порта по умолчанию 22 на другой (скажем, 8111) по соображениям безопасности, то раскомментируйте строку, отмеченную на скриншоте ниже, из файла конфигурации sshd_config .

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

Теперь настройте SELinux, чтобы разрешить порт 8111 для SSH с помощью следующей команды:

$ sudo semanage порт -a -t ssh_port_t -p tcp 8111

Теперь перезапустите службу sshd следующим образом:

$ sudo systemctl перезапуск sshd

SSH-сервер теперь должен работать на порту 8111 .

$ sudo systemctl статус sshd

Изменение адреса прослушивания:

Если вы хотите, чтобы SSH-сервер прослушивал только один сетевой интерфейс, добавьте следующую строку в файл sshd_config .

ListenAddress IP_ADDRESS_OF_INTERFACE

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

Отключить вход root:

По умолчанию CentOS 8 позволяет пользователю root входить в систему через SSH.Если вы этого не хотите, измените PermitRootLogin yes на PermitRootLogin no в файле конфигурации sshd_config .

Файл конфигурации должен выглядеть следующим образом, если для PermisRootLogin установлено значение no .

Настройка максимального количества сеансов и попыток пароля:

Если вы хотите ограничить количество пользователей, которые могут оставаться на вашем сервере CentOS 8 через SSH, раскомментируйте MaxSessions в файле sshd_config и установите желаемый номер сеанса (по умолчанию 10).

MaxSessions <Сколько сеансов вы хотите>

Файл конфигурации должен выглядеть следующим образом, если для MaxSessions установлено значение 10 .

Таким же образом можно установить лимит неудачных попыток входа в систему. Просто раскомментируйте MaxAuthTries и укажите, сколько неудачных попыток входа вы хотите разрешить, прежде чем закрывать соединение.

MaxAuthTries <Число разрешенных неудачных попыток входа>

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

Итак, вот как вы устанавливаете и настраиваете SSH-сервер на CentOS 8. Спасибо, что прочитали эту статью.

.

Как включить SSH в Ubuntu 20.04 / 18.04, Linux Mint 20/19 и Debian 10

SSH (Secure Shell) — это криптографический сетевой протокол, используемый для защиты удаленного входа в систему между сервером и клиентом. SSH заменяет Telnet и другие протоколы оболочки, такие как протоколы rlogin, rsh и rexec.

Включение SSH в Ubuntu — одна из задач, которые необходимо выполнить после новой установки ОС, она помогает удаленно подключать систему и безопасно выполнять задачи.

Этот пост покажет вам, как включить SSH в Ubuntu 20.18.04, Linux Mint 20/19 и Debian 10/9. Шаги, упомянутые в этой статье, также должны работать в предыдущих версиях Ubuntu / Linux Mint и Debian.

Предварительные требования

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

Включить SSH в Ubuntu / Linux Mint / Debian

Причина, по которой вы не можете использовать SSH, заключается в том, что пакет сервера SSH не установлен в Ubuntu, Linux Mint или Debian по умолчанию. Пакет сервера SSH доступен в базовом репозитории ОС и может быть легко установлен с помощью команды apt.

Откройте терминал, нажав Ctrl + Alt + T.

Установите пакет SSH Server с помощью команды apt.

 sudo apt update

sudo apt install -y openssh-server 

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

 sudo systemctl status ssh 

Вывод:

Состояние службы SSH

На снимке экрана выше показано, что служба SSH запущена и работает.

Разрешить SSH в брандмауэре

Вам может потребоваться разрешить входящие соединения SSH в брандмауэре (спасибо @arocee). Итак, используйте приведенную ниже команду, чтобы создать правило в UFW, разрешающее SSH-соединения с внешних компьютеров.

 sudo ufw разрешить ssh
sudo ufw enable
sudo ufw reload 

Доступ к Ubuntu / Linux Mint / Debian Machine через SSH

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

Windows

Введите IP-адрес машины в окне сеанса и нажмите Открыть .

 имя_пользователя @ ip_address 

Подключение системы из Windows

При первом подключении к системе Ubuntu может появиться всплывающее окно для принятия отпечатка пальца. Щелкните Да для подключения.

Предупреждающее сообщение при первом подключении

Введите пароль пользователя для входа в систему. После успешного входа в систему вы получите приглашение оболочки.

Удаленный доступ по SSH из Windows

Linux

 ssh user_name @ ip_address 

При первом подключении к системе Ubuntu вы получите сообщение ниже.Введите Да , чтобы продолжить подключение к системе.

 Не удается установить подлинность хоста 192.168.1.10 (192.168.1.10).
Отпечаток ключа ECDSA - SHA256: sueTz6FURcKDbeyGkpE7lUHOaosW / rkkvlG18v98T7Y.
Вы уверены, что хотите продолжить подключение (да / нет)?  Да
  

Введите системный пароль.

 Предупреждение: «192.168.1.10» (ECDSA) постоянно добавлено в список известных хостов.
[email protected] пароль:  << Введите пароль
  

При успешном входе в систему вы увидите сообщение, подобное этому.

 Добро пожаловать в Ubuntu 18.04 LTS (GNU / Linux 4.15.0-20-generic x86_64)

 * Документация: https://help.ubuntu.com
 * Управление: https://landscape.canonical.com
 * Поддержка: https://ubuntu.com/advantage


587 пакетов могут быть обновлены.
261 - это обновления безопасности.

Последний вход: Вт 30 апр, 09:03:34 2019 с 192.168.1.6
raj @ desktop: ~ $
 

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

Включение корневого доступа SSH в Ubuntu / Linux Mint / Debian

По умолчанию, вход в систему root через SSH не разрешен в Ubuntu / Linux Mint / Debian.Но вы можете включить вход в систему root, отредактировав файл конфигурации SSH.

Отредактируйте файл sshd_config.

 sudo nano / etc / ssh / sshd_config 

Задайте для PermitRootLogin значение Да

 PermitRootLogin Да 

Перезапустите службу SSH.

 sudo systemctl restart ssh 

Теперь вы можете войти в систему как root через ssh.

SSH root Login

Отключить SSH в Ubuntu / Linux Mint / Debian

По любой причине, по которой вы хотите отключить SSH в своей системе, вы можете просто остановить службу SSH, выполнив следующую команду.

 sudo systemctl stop ssh 

Кроме того, вам необходимо отключить службу SSH, чтобы она не запускалась при перезагрузке системы.

 sudo systemctl disable ssh 

Заключение

В этой статье вы узнали, как включить SSH в системе Ubuntu 20.04 / 18.04, Linux Mint 20/19 и Debian 10/9. Теперь вы можете выполнять административные действия из удаленного места через терминал.

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

Вы можете посетить официальную страницу руководства по SSH для получения дополнительной информации о настройке службы SSH.

.

Включить удаленный доступ SSH к серверу Ubuntu

Итак, вы только что установили свой новый сервер Ubuntu и думаете: , так что теперь я могу вернуться к своему столу и получить удаленный доступ к моему новому серверу …. как именно …

Ubuntu Server обычно устанавливается как автономная операционная система. Другими словами, вы получаете доступ только к командной строке. Это нормально, но вам нужно иметь возможность администрировать его удаленно, а не сидеть за локальным терминалом. Это может быть даже ВМ.

Установка

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

  sudo apt-get update
sudo apt-get install ssh
sudo ufw allow 22
  

sudo apt-get update — обновляет все старые пакеты до последней версии.

sudo apt-get install ssh устанавливает последний пакет SSH и его зависимости.

sudo ufw allow 22 — открывает доступ к порту 22 через брандмауэр.

( может также потребоваться переадресации портов, если у вас проблемы с брандмауэрами или маршрутизаторами).

Также существует вероятность, что ваши системные пакеты несколько устарели (что происходит регулярно с частотой обновлений, доступных из Ubuntu). Чтобы обновить всю вашу систему, в командной строке введите (по крайней мере, первые две из) следующие команды:

  sudo apt-get update # Получает список доступных обновлений
sudo apt-get upgrade # Строго обновляет текущие пакеты
sudo apt-get dist-upgrade # Устанавливает обновления (новые)
  

Битнами ВМ

Если вы пытаетесь запустить SSH на виртуальной машине Bitnami, они специально созданы для отключения SSH по умолчанию.
Вы можете следовать этому руководству, чтобы начать работу:
https://docs.bitnami.com/virtual-machine/faq/#how-to-enable-the-ssh-server

Отлично — теперь вы можете получить доступ к своему серверу удаленно через SSH.

Но это только начало.
Если вы даже думаете о развертывании этого сервера в «дикой природе», даже просто внутри корпоративной сетевой среды, вы захотите укрепить его.

Закалка

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

Как минимум вам следует:

  • Отключить вход на основе пароля и использовать ключи.
  • Не используйте порт 22 — переместите его выше (22123 в качестве случайного примера) — !! Безопасность посредством неизвестности — это не безопасность, но она убережет ваш сервер от большинства поисковых систем IOT, таких как Shodan .
  • Автоматически блокировать IP-адреса попыток входа в систему методом грубой силы с помощью Fail2ban или аналогичного.
    • Установить с помощью: sudo apt-get install fail2ban

Оли Уорнер (модератор AskUbuntu) написал довольно хорошее руководство в своем блоге https://thepcspy.com/read/making-ssh-secure/

На DigitalOcean есть хорошее руководство по установке и настройке: https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-14-04

Дополнительная литература:

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *