К основному контенту

Вход на сервер UNIX/Linux через SSH по ключу без пароля

Для повышения безопасности  подключения к серверам UNIX/Linux , стоит отключить вход root`a, а также вход по паролю для пользователя.


1. Создать нового пользователя

$ sudo  useradd -m -s /bin/bash user01

2. Создать пароль

$ sudo passwd user01






3. Добавить пользователя в группу sudo (Linux)

usermod -aG sudo user01

или wheel (для FreeBSD)


usermod -aG wheel user01

4. Далее необходимо генерировать пару ключей для безпарольного доступа
Поскольку планирую доступ к серверам UNIX/Linux из Винды(в основном. ну не могу пересилить себя, использовать на постоянке, рабочей станцией Linux), то генерировать буду посредством Putty. Есть в директории Putty  файлик puttygen.exe, запускаем его, в окошке выбираем RSA и длину ключа (Number of bits in a generated key) 2048 , я думаю достаточно(хотя в "приступе паранойи"однажды генерировал 8192 :)), и нажимаем Generate
и надо будет в "чистом  поле" окна утилиты хаотично двигать мышкой для создания ключа, и в последствии вписываем пароль для приватного ключа Key passphrase/Confirm passphrase. Ну и как следствие сохраняем приватный и публичный ключи.
Есть особенность сохранения публичного ключа: puttygen "тело" ключа сохраняет в несколько строк. Поэтому перед переносом ключа необходимо пересохранить в одну строку, сохранив только само "тело" ключа.
Далее переносим на сервер в папку
/home/user01/.ssh
пользователя созданного ранее. Переименовываем его в
authorized_keys
Поскольку уже ранее сохранили в одну строку, то в начале строки (перед ключем) добавляем ssh-rsa , а в конце строки через пробел добавляем user01@my-server.

5. Далее необходимо отредактировать файл конфигурации sshd-демона
/etc/ssh/sshd_config 
Там меняем переметры:

ChallengeResponseAuthentication no
 

PasswordAuthentication no

UsePAM no

PermitRootLogin no


PubkeyAuthentication yes 

еще рекомендуется поменять дефолтный порт 22 на что-то другое

Port 22

можно еще и адрес на котором будем "слушать" демон

ListenAddress XX.XX.XX.XX

Сохраняем. Пережагружаем демона


service sshd reload


6. Далее на рабочем компьютере запускаем из директории *\Putty\ файлик pageant.exe , там добавляем приватный ключик, вводим пароль ключа.
запускаем сам putty.exe, вводим user01@ip_address  port

Как правило, должно заработать... но тут как у кого карма ;)...
Возможно надо прописать правило файрвола...
Возможно опечатки в файле конфигурации демона...
Возможно надо будет права на директорию ./ssh поменять на 700 и файлик authorized_keys на 600...
Ну в целом карма - такая карма ;)




Добавлено1.

для подключения из Linux, в домашней директории пользователя,  в директории  ./ssh необходим файлик id_rsa с доступом этому пользователю.
файлик putty с наскока не подключился, поэтому просто сгенерировал пару ключей утилиткой ssh-keygen получив два файла id_rsa и id_rsa.pub 
id_rsa.pub копирую на сервер и добавляю в файл authorized_keys командой
cat if_rsa.pub>>authorized_keys
и в конце добавленого ключа меняем user@comp на user01@my-server.
после заходим на сервер
ssh -p port user01@ip_address
если все ок , том вводим пароль ключа созданного выше

Добавлено2.

ssh-copy-id -i id_rsa.pub user@host

Комментарии

Популярные сообщения из этого блога

Многономерной транк от Датагруп к Elastix 2.5

В очередной раз украли кабель укртелекома, и восстановление "через полгода", но городские надо. Поскольку есть сервер Elastix2.5, решение очевидно sip-trunk. Укртелеком на вопрос sip-trunk "отморозился" причиной "он нестабилен, он ненадежен, и т.п., берите облачную атс" (зачем мне облачная атс?) Побывав на IT-Forum2018, встретил (единственного!!!! на весь форум) оператора/провайдера Датагруп, выяснил, что возможность подключить транк есть и подходит под мои условия(nat,отсутствие "белого ip") ТЗ;  -sip-trunk на 3 номера и 10 голосовых сессий; -атс на базе Elastix2.5. После заключения всех договоров и оплаты подключения, получен заветный конверт с логином паролем и адресом подключения (и иными параметрами подключения), 1) создаем транк: меню Trunk / Add SIP trunk Рис.1 Создаем  (Рис.1) Trunk Name : "имя транка",  Outbound CallerID : логин из конверта Рис.2 Далее (Рис.2) Trunk Name : "имя транка...

FreeBSD полезности

Приглашение командной строки bash В файле /etc/profile добавляется строка PS1="\h\\$ "; export PS1 в этом виде: \h - имя компьютера до первой точки; \\$ - если UID пользователя 0 (su/root), то будет выведен символ # , иначе $; можно использовать и другие символы: \u - имя юзера; \H - полное имя компьютера; \d -текущая дата " день недели месяц число"; \n - символ новой строкиж; \r - возврат карретки; \t - время в 24 формате (ч:м:с); \T - время в 12 формате; \w - текущий каталог с полным путем; \W - название текущего каталога; $() - внешняя команда в скобках, например (date). Ошибка при запуске MC common.c: unimplemented subshell type 1 read (subshell_pty...): ... проверить export $SHELL если /bin/sh изменить на /bin/csh командой chsh -s /bin/csh root перезайти netstat -nr проверить текущий шлюз по умолчанию

Использование windows(samba) диска в linux

Как подключить сетевой диск Windows в Linux Поддержку сетевых дисков Windows в Linux обеспечивает пакет cifs-utils. Если он у вас еще не установлен, в командной строке от имени суперпользователя введите sudo apt install cifs-utils Создайте в /mnt (или любом другом месте) папку, в которую мы будем подключать сетевой диск Windows: mkdir /mnt/winshare И наконец само подключение сетевой папки Windows в Linux выполняется с помощью команды mount.cifs mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o username=WIN_USER_NAME,password=WIN_USER_PASSWORD Такая команда выполнит присоединение к фаловой системе Linux сетевого диска Windows с именем SHARE_NAME, расположенного на сервере с IP-адресом SERVER_IP от имени WIN_USER_NAME с паролем WIN_USER_PASSWORD.  В большинстве случаев этого достаточно, если вы работаете от лица суперпользователя. Если же вы от лица суперпользователя производите только подключение сетевой папки Windows, а работать с ней планируете от лица об...