Во-первых, /etc/ssh/sshd_config
и /etc/ssh/ssh_config
это разные файлы. d
- означает демон, то есть задача, выполняющаяся в фоне. Файл /etc/ssh/sshd_config
отвечает за настройку соединения К данному компьютеру.
Опишу ещё чуть-чуть: вы сидите дома в тепле с чашкой какао перед своим персональным компьютером. Открываете терминал и вводите команду ssh username@servername
(доп параметры опущены, кто профи тот профи). Так вот именно /etc/ssh/sshd_config
на сервере servername
отвечает за то, чтобы пускать вас к себе (или нет), а если пускать, то как вас аутентифицировать (и что вообще вы можете там делать).
А уже файл /etc/ssh/ssh_config
на вашем персональном компьютере отвечает за то, с какими параметрами ВЫ хотите подключаться к серверу.
Во-вторых, нет предела совершенству. Поэтому welcome для допиливания статьи, предложения тем, которые можно рассмотреть. fail2ban
- обязательно к изучению
Посмотрите, что такое:
telnet
(НЕ ИСПОЛЬЗОВАТЬ ЭТО В СОВРЕМЕННОМ МИРЕ)
Эта штука, как
http
, передаёт НЕзашифрованный трафик, включая ваши явки-пароли.
vnc
Даже если физический сервер, на котором крутится ваша ВМ, сгорел. То с помощью этой штуки вы всё равно сможете получить доступ.
ssh
Версия ssh-1 признана НЕзащищённой. В ней много уязвимостей, по которым вас сможет взломать даже ребёнок. Версия ssh-2 топ.
fail2ban
Ленивая, потому что автору лень писать все свои мысли на счёт того или иного параметра. Поэтому автор оставит ссылки на оригинальные статьи, откуда была взята информация.
В большинстве статей вы увидите очень мало: пароли это плохо, выключаем рута, публиккей круто. Здесь же описаны параметры, которые можно отнести к разделу "расширенная настройка".
man sshd_config
на русском языке + в удобном формате и последовательно.
Да-да, существует
man sshd_config
, который на английском языке выведет вам ВСЕ доступные настройки и их описание.
Получился вот такой /etc/ssh/sshd_config
файл. Некоторые значения по умолчанию автору понравились, поэтому он их не стал менять и вносить в этот конфиг.
# https://help.ubuntu.ru/wiki/ssh
Include /etc/ssh/sshd_config.d/*.conf
# SSH 1 is the weakest thing in the world
Protocol 2
# Leave default to make your life easier
# It's better to setup sshd instead of changing port
Port 22
# Logging
SyslogFacility AUTH
LogLevel INFO
MaxAuthTries 3
MaxSessions 10
# Authentication
LoginGraceTime 30
MaxStartups 3:30:9
# Disable root auth
PermitRootLogin no
# Run child procces of sshd while connecting
# After connecting - kill this child proccess
# S for Security
UsePrivilegeSeparation yes
# Check for directory persmissions
StrictModes yes
# This is old UNsecurity method
# Watch below for newest
TCPKeepAlive no
# To abort user connection after 3 attemps of 10 secs
ClientAliveInterval 10
ClientAliveCountMax 3
# Where to find authorized keys
AuthorizedKeysFile %h/.ssh/authorized_keys
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
HostbasedAuthentication no
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
RhostsRSAAuthentication no
# To disable tunneled clear text passwords, change to no here!
# Disable password auth
PasswordAuthentication no
# Disable empty password auth if `PasswordAuthentication yes`
PermitEmptyPasswords no
# Enable key auth
PubkeyAuthentication yes
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
UsePAM yes
# Additional settings
X11Forwarding no
# Message Of The Day
PrintMotd no
PrintLastLog yes
# no default banner path
Banner none
DebianBanner no
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server
/etc/ssh/ssh_config