Решил сделать безопасным соединение на веб сервер.
Вход только по сертификату ( ключу ) с не возможностью зайти по ssh.
Сложного ничего нет, но появились «подводные камни» в процессе.
sshd_config
Кусок конфига, для входа только по ключу.
Protocol 2 # включаем 2-ую версию протокола для улучшенной безопасности
PermitRootLogin no # запрет на логин root-ом
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
RhostsRSAAuthentication no
HostbasedAuthentication no
IgnoreRhosts yes
PasswordAuthentication no
PermitEmptyPasswords no
UseLogin no
UsePAM no # отключаем авторизацию по паролю (очень важно!)
Добавляем в конец sshd_config
AllowGroups wheel sftp
Subsystem sftp /usr/local/libexec/sftp-server
Match group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Если с первого раза не заработало, то включаем дебаг и смотрим.
LogLevel DEBUG
Так же момент ( забыл, или не знал ) ключ нужно делать одной длины, что указали на сервере.
ServerKeyBits 4096
В одном месте прочитал что, для большей безопасности ServerKeyBits
менять на нестандартный. Главное самому не забыть.
так же не забываем про права на:
chmod 600 ~/.ssh/authorized_keys
ChrootDirectory — владельцем этой папки должен быть root и у других пользователей не должно быть прав на запись.
В противном случае получим ошибку:
fatal: bad ownership or modes for chroot directory
Поэтому ChrootDirectory =/usr/home/ делается на каталог выше, где у пользователя нету прав на запись, а уже внутри каталога /usr/home/files у него есть права на запись.
Так же будет полезно, а то забываю всегда
pw groupadd
имя группы
Создать группу.
pw groupdel
имя группы
Удалить группу.
pw groupmod имя группы -m пользователь1,пользователь2
Добавить пользователей в группу.
pw groupmod имя группы -d пользователь1,пользователь2
Удалить пользователей из группы.
pw groupshow имя группы
Отобразить пользователей группы.
pw usershow user
user:*:1001:1001::0:0:User &:/home/user:/bin/sh
Отобразить информацию о пользователе
pw usermod user -s /usr/local/bin/bash
Установим новый shell :
Источники:
Using Putty on Windows to login Linux securely via OpenSSH
Аутентификация на SSH-сервере FreeBSD с использованием ключей.
Комментирование закрыто.