Linux баннер при подключении к ssh
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] -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:
Утилита предложит добавить устройство в список известных:
Затем предложит ввести пароль:
Все следующие команды будут выполняться уже на Raspberry Pi или другой удаленной машине, к которой вы подключились.
Теперь подключиться к серверу по ssh из этой операционной системы также просто как и из Linux.
Выводы
В этой статье мы рассмотрели как выполняется подключение к серверу по SSH из Linux или Windows. Как видите, это очень просто. А дальше, для работы с удаленным сервером вам понадобятся команды терминала Linux.
Нет похожих записей
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Перевод: Программы, входящие в состав системы Debian GNU/Linux, являются свободными программами; точные условия распространения для каждой программы описаны в отдельных файлах в /usr/share/doc/*/copyright.
Debian GNU/Linux поставляется без каких-либо гарантий, разрешено действующим законодательством.
Один раз прочитать нужно, а в дальнейшем видеть эту информацию не имеет смысла. Можно заменить её на что-то более полезное. Или, например, вывести информативный баннер, а лучше информацию об использовании оперативной памяти или нагрузке на процессор. Так как же изменить приветствие в консоли или в SSH Debian?
Текст об отказе от гарантий находится в файле /etc/motd. Открываем его в текстовом редакторе nano (выполняем с правами root):
И заменяем, содержащуюся в нём информацию, на свою. Например, вносим сведения об организации или об особенностях данного сервера (рабочей станции). Выходим из системы и входим заново. Получилось!
Теперь попробуем вывести баннер. Для этого, сначала надо очистить /etc/motd. Удалять не надо – просто очистить.
Затем понадобится программа figler. Устанавливаем её через apt или aptitude (кому как нравится):
Программа figlet выводит в стандартный поток вывода текстовый баннер составленный из символов. Например, команда:
Выведет на экран следующий баннер.
Ключ –с выравнивает баннер по центру, а ключ –t устанавливает ширину вывода по ширине экрана. Figlet поддерживает юникод. Т. е. можно сделать баннер на русском языке. Для этого нужно указать ключ –C и использовать соответствующий шрифт -f.
$ figlet -ct -C utf8 -f banner айтишник.ру
Выведет на экран следующий баннер.
Кстати, посмотреть используемые figlet шрифты можно с помощью команды:
Пока о figlet достаточно, а мы продолжим. Нам нужно сделать простейший скрипт, например salute.sh, содержащий вызов figlet с нужными параметрами и разместить его в /etc/profile.d.
С помощью редактора nano сразу создаем его в нужном месте:
Со следующим содержанием:
Сохраняем файл (Ctrl+O, Enter), закрываем редактор (Ctrl+X). Выходим из системы и входим заново. Любуемся результатом!
А теперь давайте выведем в приветствие полезную информацию о файловой системе, загрузке процессора, использовании оперативной памяти и т. д. Для этого нам понадобится другой скрипт. Назовём его sshinfo.sh. Содержимое скрипта взято отсюда.
Сохраняем и закрываем файл. И опять выходим из системы и входим в неё. Полезно, не так ли?
Комбинируя всё то, о чём вы прочитали в этой статье, можно добиться от приветствия хорошей информативности. Надеюсь, статья вам понравилась.
Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ
Мне это не нравится. Особенно указания на версии и названия программы. Слишком много вредной инфы выводится. Вредной в смысле облегчения поисков эксплоитов и т.п.
Хотелось бы без перекомпиляции исходников поредактировать инфу.
В /etc/ssh/sshd_config есть параметр Banner, но отвечает за то, что выводится после логина.
А если ман перечитать?
ман не совсем то ли точный, то ли ясный. Строчка из этого файла у меня подставляется после логина и никак не меняет вывод телнета на ssh-порт.
Спасибо, похоже действительно только исходники если патчить.
Не то, мне не нужно приветствие после логина. Мне нужно, чтобы telnet хост порт не выдавал лишнего.
У меня она появляется до логина. Ман говорит, что она появляется до логина. Нас больше, ты проиграл.
А версия в ssh-клиенте не выводится вообще – вангую, она таки действительно часть протокола, поэтому проглатывается.
У меня она появляется до логина. Ман говорит, что она появляется до логина. Нас больше, ты проиграл.
Ну ладно, и до и после логина. В любом случае, не об этой инфе речь. По умолчанию, она вообще не выводится.
А версия в ssh-клиенте не выводится вообще – вангую, она таки действительно часть протокола, поэтому проглатывается.
Наверное. Но вообще она появляется, если смотреть не ssh-клиентом, а просто телнетом.
А может port knocking, чтобы пока не постучал - sshd был прикрыт?
Мне это не нравится. Особенно указания на версии и названия программы. Слишком много вредной инфы выводится. Вредной в смысле облегчения поисков эксплоитов и т.п.
Ты хочешь security by obscurity, но это так не работает. Просто обновляй софт вовремя
Ты хочешь security by obscurity, но это так не работает.
Нет, это именно так и работает. Правило означает, что безопасность не должна основываться на незнании, но это не значит, что все надо публично выставлять.
Это не всегда помогает.
Хотелось бы без перекомпиляции исходников поредактировать инфу.
Редактируй бинарник, делов то.
Но ломать тебя будут не глядя на версии, просто будут перебирать уязвимости начиная со свежайшей доступной
futurama ★★★★★ ( 26.01.21 11:07:46 )Последнее исправление: futurama 26.01.21 11:10:14 (всего исправлений: 1)
Нет, это именно так и работает. Правило означает, что безопасность не должна основываться на незнании, но это не значит, что все надо публично выставлять.
Ничего постыдного в этом нет. Все сервера святят версиями и не позволяют настраивать этот параметр. Это нормально. Вместо создания неясности нужно использовать свежий либо патченный от дырок софт.
И пересаживать SSH на нестандартный порт это тоже школизм. Вместо этого надо использовать аутентификацию по ключам, и никто тебя брутить не будет.
Ничего постыдного в этом нет. Все сервера святят версиями и не позволяют настраивать этот параметр. Это нормально. Вместо создания неясности нужно использовать свежий либо патченный от дырок софт.
И пересаживать SSH на нестандартный порт это тоже школизм. Вместо этого надо использовать аутентификацию по ключам, и никто тебя брутить не будет.
Правильно, если сервис публичный или от какой-то компании, то смысла никакого нет.
Но ты вот эти все рассуждения прикладываешь к ситуации организации шары для буквально пары-тройки, ну может чуть больше человек приватным образом в условиях, когда в сущности максимум доступного - это просто вовремя накатывать апдейты от мейнтейнеров дистрибутива.
Почему в этом случае слегка дополнительно не обезопаситься и нестандартным портом и приветствием? Пока например за уже без малого сутки, судя по логам, никто левый даже не попробовал проверить нестандартный порт - чем этот результат плох?
Или еще, вот ты говоришь про вовремя обновляться и патчить дырки. Но что-то героев на этих условиях выставить в обычный интернет samba не особо много (также как и NFS к слову). А ведь тоже, казалось бы она и патчится и обновляется и при правильной настройке пускает только заданных юзеров.
praseodim ★★★★★ ( 26.01.21 12:20:01 )Последнее исправление: praseodim 26.01.21 12:26:11 (всего исправлений: 4)
Указанные тобой меры могут отпугнуть разве что школие, и то не любое.
Если кто-то захочет взломать тебя, его твои пионерские обфускации не смутят.
судя по логам, никто левый даже не попробовал проверить нестандартный порт - чем этот результат плох?
Тем что самому становится неудобно. Надо подключаться к какому-то левому порту. Парольная аутентификация по SSH это крайняя мера. Используют вообще-то стандартный порт и аутентификацию по ключам
Если кто-то захочет взломать тебя, его твои пионерские обфускации не смутят.
Конечно. Но стаи тупых ботов простая смена порта уже отваживает. Понятно, что против них все-равно и в первую очередь даже, надо обновляться, но тем не менее.
Так я не на общую слабость самбы и nfs хочу обратить внимание, а что в каждый текущий момент они как бы защишены. То есть, вроде бы нет никаких дырок, если обновляться.
Надо подключаться к какому-то левому порту.
Это вообще не проблема. Одна дополнительная опция при подключении. Многие клиенты (winscp например) и так имеют поле для ввода номера порта, просто там по умолчанию 22 стоит.
Используют вообще-то стандартный порт и аутентификацию по ключам
Нормальный пароль, сгенерированный pwgen, в плане безопасности чем хуже? Вообще-то, я знаю, что на самом деле хуже, тем что клиентом не проверяется сервер (вернее если проверять отпечаток, то тогда уже и ключи проверять) и упрощается mitm. Но это уже как раз из серии изощренных атак, которые в обычном случае (как у меня) никто не станет делать. А если есть опасение, то конечно ключи должны быть.
Главный риск тут, чтобы не оказалось какой-то 0-day дыры, позволяющей обойтись вообще без аутентификации или проверки ключа/пароля или чего-то в этом роде.
Если выбрать yes то в файл
/.ssh/known_hosts добавится похожая строка:
|1| abcdef+abcdefghijklmnopqrst=|abcdefghijklmnopqrstuvwxyz1= ssh-rsa abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzB1234567
Обычно файл known_hosts имеет следующий формат (записи идут через пробел)
Это хэш от имени сервера.
Здесь через пробел записаны три элемента: хэш от имени сервера, название используемого ассиметричного алгоритма и публичный ключ сервера. Разберём их по очереди.
Сгенерировать пару ключей
Первый шаг - это генерация пары ключей. Обычно это делается на клиентской машине. Например, на вашем ноутбуке.
ssh-keygen -b 4096
sudo ssh-keygen -b 4096
Нужно придумать имя ключа.
Я назову ключ andrei-key101 а сохранять буду в текущую директорию.
Нужно два раза ввести пароль. Если он вам нужен. Обычно нет.
Ключи готовы. Я сохранил их в текущую директорию поэтому увижу их сделав ls
Важно помнить, что если вы генерируете ключ для другого пользователя нужно позаботиться о правильных правах доступа к этому ключу.
.pub ключ отправляйте на удалённую машину
приватный ключ храните на своём клиенте
Передать ключ на удалённый хост
После того, как ключи созданы нужно передать .pub ключ на удалённый хост.
Сделать это можно несколькими способами начнём с утилиты ssh-copy-id
ssh-copy-id
Я предпочитаю использовать с флагом -i и задавать путь до нужного ключа
sudo ssh-copy-id -i
Введите yes
Теперь на хосте 192.168.0.2 в файле /home/andrei/.ssh/authorized_keys появилась новая запись вида
Знак … заменяет длинные последовательности случайных символов для экономии места.
Проверить ключ можно командой
Если вы не задавали пароль для ключа, то попадёте на удалённый хост без лишних движений
Last login: Sun Jan 10 16:48:27 2021 from 192.168.0.1
Узнать версию OpenSSH в Linux
Чтобы узнать версию OpenSSH в вашем дистрибутиве Linux выполните
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
Выполнить команду из скрипта на удалённом компьютере
Если подключение по ssh происходим из bash-скрипта , и при этом нужно ещё выполнить ряд команд после подключения - достаточно перечислить эти команды через точку с запятой
Если нужно выполнить команду, требующую sudo попробуйте флаг -t
known_hosts
Список известных хостов находится в файле known_hosts
Обычно файл known_hosts имеет следующий формат (записи идут через пробел) ( подробнее )
Примеры алгоритмов: ssh-rsa, ssh-dss, ssh-ed25519, ecdsa-sha2-nistp256 …
|1| abcdef+abcdefghijklmnopqrst=|abcdefghijklmnopqrstuvwxyz1= ssh-rsa abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzB1234567
Это хэш от имени сервера.
Это алгоритм шифрования
Это публичный ключ хоста
Создать SSH туннель
Туннели обычно создают для перенаправления траффика. SSH tunnel это то же самое что и SSH port forwarding.
На удалённом хосте у вас есть пользователь с именем andrei и вы знаете его пароль.
Сперва нужно определиться с портами на локальном хосте и на удалённом.
Предположим, вы выбрали 9119 для локального и 9200 для удаленного хостов.
То есть вы хотите, чтобы всё, что идёт на localhost:9119 было перенаправлено на 192.168.0.2 : 9200
ssh -L 9119: 192.168.0.2 : 9200 [email protected]
Проверьте ip выполнив
Если вам нужен туннель с поддержкой графического интерфейса X Window System используйте флаг -X
ssh -X -L 9119: 192.168.0.2 : 9200 [email protected]
Демонстрация
Туннель создан, не закрывайте терминал. Откройте два новых терминала или две новые вкладки в старом.
У вас два пустых терминала, оба на локальном хосте. Назовём их 1 и 2.
Из терминала 2 подключимся к удалённому хосту 192.168.0.2 по ssh и будем слушать на порту 9200 с помощью nmap
ssh [email protected]
nmap -l 9200
nmap localhost 9119
Введём любой текст
Откройте терминал 2 там дожен появиться тот же текст
Список всех открытых SSH туннелей
Чтобы получить список туннелей открытых именно ssh выполните
ssh 14695 andrei 3u IPv4 230080 0t0 TCP 192.168.0.1:46356->192.168.0.2:ssh (ESTABLISHED) ssh 14695 andrei 4u IPv6 230103 0t0 TCP [::1]:9119 (LISTEN) ssh 14695 andrei 5u IPv4 230104 0t0 TCP 127.0.0.1:9119 (LISTEN)
Вывод этой команды при практически идентичных условиях почему-то разный.
Ниже пример второго варианта. Если вы знаете почему так получается - напишите в комментариях.
ssh 15151 andrei 3u IPv4 239364 0t0 TCP 192.168.0.1:46464->192.168.0.2:ssh (ESTABLISHED) ssh 15151 andrei 4u IPv6 239380 0t0 TCP [::1]:mxit (LISTEN) ssh 15151 andrei 5u IPv4 239381 0t0 TCP 127.0.0.1:mxit (LISTEN) ssh 15151 andrei 9u IPv6 239428 0t0 TCP [::1]:mxit->[::1]:54306 (ESTABLISHED)
Закрыть все SSH туннели
Чтобы закрыть всё, что связано с ssh можно выполнить
sudo killall ssh sshd
Этот метод хорош только если вы работаете один, например на какой-то виртуальной машине.
Запустить SSH в фоновом режиме
Существует несколько способов запустить ssh соединение в фоновом режиме - то есть освободим текущий терминал.
-L, screen, tmux, nohup
Мне запустить ssh фоном из скрипта помог nohup, поэтому начнём с него
nohup ssh user@host "cd scripts;python3 my_script.py $ARG1 $ARG2; exit" &
Для чего это было нужно: Python скрипт сначала открывал одно ssh соединение из subprocess там выполнялась команда для запуска мониторинга потребления памяти и больше от этого соединения ничего было не нужно, зато необходимо было выполнять новые соединения с нагрузкой из другого скрипта.
Чтобы уйдя из первого подключения не оборвать мониторинг потребления памяти перед ssh нужно было добавить nohup, а в самом конце поставить &
SSH_MSG_USERAUTH_BANNER
Клиенту, подключившемуся к ssh серверу можно показать баннер SSH_MSG_USERAUTH_BANNER
И отредактируйте файл добавив свой баннер
Откройте sshd_config и укажите путь до баннера
Этот баннер будет показан ДО авторизации, то есть во время ввода пароля
Чтобы создать баннер, который будет показан после успешного входа выполните
После редактирования файлов перезапустите sshd
sudo systemctl restart sshd.service
Конвертация сертификатов
Рассмотрим простой пример: вы достали из базы данных сертификат MIIC4jCCAc … A7A6Rpt8V9Q== , но он не отформатирован и не проходит валидацию
Сертификат, конечно, длиннее, я поставил троеточие для экономии места и вашего времени.
Либо, если вам нужно работать с файлами - сохраните исходный сертифика в фай raw_cert
echo MIIC4jC … 7A6Rpt8V9Q== > raw_cert
cat raw_cert | base64 -d | openssl x509 -inform der > cert
cat cert
-----BEGIN CERTIFICATE-----
MIIC4jC … 7A6Rpt8V9Q==
-----END CERTIFICATE-----
Такого же результата можно было добиться аккуратно добавив -----BEGIN CERTIFICATE----- в начало и -----END CERTIFICATE----- в конец файла, но не всегда всё так просто.
Базовая защита от взлома вашего linux сервера. Запрет входа для root пользователя, смена стандартного порта и другие способы защиты.
Каюсь, давным-давно я был молод и силен входил на сервер с помощью root пользователя. Времена меняются, паранойя растет, так что разберемся как не дать школьнику доступ к нашему серверу.
Поскольку мы будем вносить изменения в SSH, важно никогда не закрывать ваше первоначальное SSH-соединение. Вместо этого откройте второй сеанс SSH для тестирования. Это сделано для того, чтобы избежать блокировки вашего сервера в случае ошибки в конфигурации SSH.
Как только все заработает, вы можете безопасно закрывать любые сеансы.
Cтатья не является “рецептом”, в котором надо выполнить все пункты. Некоторые пункты не нужны, если вы выполнили другие. Поэтому выберете только необходимые вам. Я же придерживаюсь следующего рецепта.
Устанавливайте обновления
Эффективность: 🛡️ 🛡️ 🛡️
Самое простое что вы можете сделать, и я заклинаю вас это делать – обновляйте систему. Своевременное обновление защитит вас от больнитсва известных уязвимостей.
Для CentOS команда на обновление выглядит так
Замена стандартного порта SSH
Эффективность: 🛡️ 🛡️
Один из самых простых способов защититься от неумелых атакующих и тупых ботов – это изменение дефолтного порта подключения по SSH. Большинство ботов сканируют только дефолтный порт, сменив его вы защититесь от ботов работающих на дурака.
Перед сменой порта разберитесь, какой firewall стоит на вашей системе. Например на CentOS 8 это скорее всего firewalld.
Вам необходимо открыть новый порт для ssh, и закрыть старый. Например, если у вас установлен firewalld, а порт вы выбрали 58291, то команды для открытия порта будут такие:
Для изменения порта нужно отредактировать файл /etc/ssh/sshd_config . В этой статье мы будем часто этим заниматься. Всякий раз, когда вам нужно отредактировать этот файл, используйте следующую команду:
После этого необходимо перезапустить службу ssh:
Для входа с использованием нового порта используйте следующий флаг:
Config SSH
Чтобы не запоминать порты ко всем своим серверам, можно воспользоваться файлом
.ssh/config . Создайте этот файл, если его нет на вашей локальной машине.
Пример .ssh/config
В этот файл записываются параметры для подключения к серверу, после чего можно использовать короткую запись авторизации.
🔐 Используйте SSH ключ вместо пароля
Эффективность: 🛡️ 🛡️ 🛡️ 🛡️ 🛡️ 🛡️
Сервер OpenSSH поддерживает различную аутентификацию. Пароли можно угадывать, взламывать или подбирать методом перебора. Ключи SSH не подвержены таким атакам.
Когда вы генерируете ключи SSH, вы создаете пару ключей. Один из них - открытый ключ, другой - закрытый. Открытый ключ устанавливается на серверах, к которым вы хотите подключиться. Закрытый ключ, хранится в безопасности на вашем компьютере.
Схематичный процесс авторизации по SSH ключу
Создание ssh ключей
И так, генерация ключей ssh выполняется командой:
Утилита предложит вам выбрать расположение ключей. По умолчанию ключи располагаются в папке
/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.
Затем утилита предложит ввести пароль для дополнительного шифрования ключа на диске. Его можно не указывать, если не хотите.
Теперь у вас есть открытый и закрытый ключи SSH и вы можете использовать их для проверки подлинности. Дальше нам осталось разместить открытый ключ на удаленном сервере.
Никогда и никому не передавайте свой закрытый ключ.
Загрузка ключа на сервер
Самый простой способ скопировать ключ на удаленный сервер - это использовать утилиту ssh-copy-id . Она входит в пакет программ OpenSSH. Но для работы этого метода вам нужно иметь пароль доступа к серверу по SSH.
Если вы хотите указать путь до публичного ключа, используйте команду:
При первом подключении к серверу система может его не распознать, поэтому вам нужно ввести yes. Затем введите ваш пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id_rsa.pub для загрузки его на сервер в файл
/.ssh/authorizedkeys. Дальше вы можете выполнять аутентификацию с помощью этого ключа.
Если такой способ по какой-либо причине для вас не работает, вы можете скопировать ключ по ssh вручную. Мы создадим каталог
/.ssh , а затем поместим наш ключ в файл authorized_keys с помощью символа >> , это позволит не перезаписывать существующие ключи:
Здесь вам тоже нужно набрать yes, если вы подключаетесь к новому серверу, а затем ввести пароль.
Также необходимо убедиться, что имеется возможность входа по ssh ключу. Для этого в файле /etc/ssh/sshd_config должна присутствовать строка PubkeyAuthentication yes .
После этого вы можете использовать созданный ключ для аутентификации на сервере:
Если вы не захотели создать ssh ключ с доступом по паролю, то вы сразу же будете авторизованы, что очень удобно. Иначе, сначала вам придется ввести фразу-пароль для расшифровки ключа.
🙅♂️ Запрет авторизации по паролю
Эффективность: 🛡️ 🛡️ 🛡️ 🛡️ 🛡️
Логическим продолжением использования ключей SSH является полное отключение аутентификации по паролю для всех пользователей.
Прежде чем запрещать вход по паролю, проверьте возможность входа по ssh ключу.
Нам нужно отредактировать ваш файл конфигурации SSH.
Находим строчку PasswordAuthentication yes и меняем ее на PasswordAuthentication no .
Теперь сохраните файл и перезапустите службу ssh:
Создание нового пользователя
Эффективность: 🛡️ 🛡️ 🛡️
Это плохая практика - входить в систему как root на вашем сервере. Вы должны войти в систему как обычный пользователь и использовать sudo для выполнения действий, требующих привилегий root.
Root«Root» — это учётная запись, которая имеет доступ ко всем без исключения действиям. Да, вообще ко всем.
Более того, вы не должны позволять root входить в ваш SSH-сервер. Подключение должно быть разрешено только обычным пользователям. Если им нужно выполнить административную задачу, им также следует использовать sudo.
Добавим нового пользователя, на замену root.
Если вас не попросили придумать пароль для пользователя, то установите его вручную.
Я предполагаю, что мы заблокируем root пользователя, поэтому после этого добавим пользователя в группу sudo:
На некоторых ОС эта гурппа называется wheel.
Для каждого пользователя sudo можно задать ограничения: разрешить запускать только определенные команды от имени супер пользователя.
🙅♂️ Запрет доступа root на сервер
Эффективность: 🛡️ 🛡️ 🛡️ 🛡️ 🛡️
Самый лучший вариант – это когда у root пользователя нет возможности войти на сервер.
Если вы вынуждены разрешить пользователю root вход в систему, вы можете хотя бы заставить его использовать ключи SSH.
Открываем текстовый файл в любом редакторе:
Нас интересует параметр PermitRootLogin :
- Если вы хотите вообще запретить пользователю root вход в систему, установите PermitRootLogin no .
- Если вы собираетесь разрешить пользователю root входить в систему, но хотите использовать только SSH-ключи, установите PermitRootLogin prohibit-password .
После внесения вышеуказанных изменений сохраните и закройте файл. Затем перезапустите службу SSH, чтобы внесенные изменения вступили в силу.
Читайте также:
- Комбинаций горячих клавиш в проводнике windows отвечает за вызов диалога свойств выделенного объекта
- Lightroom windows 7 совместимость
- Файл повредит компьютеру mac как отключить
- Как включить режим совместимости в windows 10
- Наиболее популярные ос для персональных компьютеров windows android linux macos нет ответа