Linux sshd config

Файл настроек сервера sshd

Узнать путь к файлу поможет команда:
$
locate sshd_config

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

which
показывает положение бинарных, или исполняемых файлов.

whereis
покажет положение бинарного файла, исходников и man-страницы

find . -name
Используется опция -name, которая задает поиск всех файлов и каталогов, содержащих в названии определенное сочетание букв.

к слову в виндовс есть аналогичные команды для поиска where и
find

Скорее всего путь будет
/etc/ssh/sshd_config


Если потребуется изменить, то можно просто удалить "решетку", тем самым раскомментировав параметр и указать свое значение (к примеру с "yes" изменить на "no"), так как это представлено ниже:


Пример конфигурации

# Определяет, на каких портах и адресах ваш сервер будет ждать входящие соединения “any” - любые, “inet” (только IPv4), “inet6” (только IPv6)
AddressFamily inet

# Изменение порта SSHD (Port)
Port 2200

# Ограничение авторизации по интерфейсу (ListenAddress), авторизовываться только на
ListenAddress 192.168.0.2
ListenAddress 192.168.0.3
# или
ListenAddress 192.168.0.1:2200
ListenAddress 192.168.1.1:22

# Заставить sshd работать только с протоколом SSH2
Protocol 2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
UsePrivilegeSeparation yes

KeyRegenerationInterval 3600
ServerKeyBits 1024

SyslogFacility AUTH
LogLevel INFO

# Изменение времени ожидания авторизации (LoginGraceTime) 1m = 1 минута
LoginGraceTime 120

# Отключение возможность авторизации под суперпользователем (PermitRootLogin) "without-password", "forced-commands-only", "no".
# Если директива установлена в "without-password" вход для пользователя root по паролю, будет запрещен.
# Значение "forced-commands-only" разрешает регистрацию пользователя root по открытому ключу, но только если установлен параметр command
# Значение по умолчанию "no", удаленный вход в систему пользователем root, полностью запрещён.
PermitRootLogin no

# Предоставление доступа только указанным пользователям или группам (AllowUsers, AllowGroups)
AllowUsers Оля Коля Толя root
AllowGroups developers administrators root

# Блокировка доступа определенным пользователям или группам (DenyUsers, DenyGroups)
DenyUsers cvs apache borya
DenyGroups marketing staff

# Рассоединение при отсутствии активности в шелле (ClientAliveInterval)
# Для того, чтобы ваш ssh-клиент автоматически отключался после 10 минут (600 секунд)
ClientAliveInterval 600
ClientAliveCountMax 0

StrictModes yes

# Аутентификация на основе SSH2 RSA-ключей
PubkeyAuthentication yes

# Один общий файл с ключами
# По умолчанию SSH-клиент ищет ключи в файле ~/.ssh/authorized_keys
AuthorizedKeysFile /etc/ssh/authorized_keys

RSAAuthentication yes

IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

# Разрешить аутентификацию по паролю
PasswordAuthentication no

# Разрешить использование пустых паролей при аутентификации по паролю.
PermitEmptyPasswords no

# Проброс Х11 позволяет графическим интерфейсам программ, работающих на удаленной машине-сервере, отображаться на локальной машине-клиенте.
# На удаленной системе установите пакеты xorg-xauth и xorg-xhost (xauth). xauth - это утилита, которая поддерживает конфигурации Xauthority, используемые сервером и клиентом для аутентификации сессии X11
# AllowTcpForwarding и X11UseLocalhost присвоены значения yes, а X11DisplayOffset - 10
# На клиенте включите опцию ForwardX11 либо добавив флаг -X в командной строке для необходимых подключений, либо присвоив в конфигурационном файле клиента openSSH опции ForwardX11 значение yes.


X11UseLocalhost  yes
AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10

ForwardX11Trusted yes

# Перенаправление X11
ForwardAgent yes
ForwardX11 yes

PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

AcceptEnv LANG LC_*

# SFTP-сервер. Протокол SFTP (SSH File Transfer Protocol) - SSH-протокол для передачи файлов.
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes


После изменений параметров нужно перезапустить сервер sshd:
$
sudo service ssh restart
либо
$
sudo service ssh --full-restart
либо
$
sudo /etc/rc.d/sshd restart


Create the SSH key

\\ Create the SSH key directory for the user:
$
cd ~/.ssh
$
ssh-keygen -t rsa -f id_rsa

\\ You do not need to save the fingerprint or randomart image. Verify that id_rsa and id_rsa.pub were created.
$
sudo chmod 700 .ssh
$
sudo chown -R tonic:tonic .ssh

\\ copy the public key from the remote system runs Linux, use this command:
sudo -u tonic ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_user>@<remote_host>

\\ Verify the key setup by tonic user; for example:
$
echo "test" > /tmp/test
$
chmod a+r /tmp/test
$
sudo -u tonic scp -B /tmp/test <remote_user>@<remote_host>:<remote_dir>


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

# Коментарии записываются только с новой строки
# общий вид записей в файле authorized_keys
# [опции] тип_ключа(ssh-rsa или ssh-dss) очень_длинная_строка_непонятная_простому_человеку [логин@хост]
ssh-rsa AAAAB3Nza...LiPk== user@example.net
from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== john@example.net
command="dump /home",no-pty,no-port-forwarding ssh-dss AAAAC3...51R== example.net
permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss AAAAB5...21S==
tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== jane@example.net

Передаём публичный ключ на сервер командой
$
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

Когда ssh работает на нестандартном порту:
$
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p port user@server"



Eсли возникает ошибка:
Bad port 'umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys'

попробуйте взять параметры в кавычки:
$
ssh-copy-id '-i /home/user/.ssh/id_rsa.pub "-p port user@server"'

Исправление SSH ошибки 'UNPROTECTED PRIVATE KEY FILE!' , Permission denied (publickey).
$
sudo chmod 0600 ~/.ssh/id_rsa
$
sudo chmod 0600 ~/.ssh/id_rsa.pub

Исправление ошибки - Failed to add the host to the list of known hosts
$
sudo chmod 0644 ~/.ssh/known_hosts

для директории с SSH ключами:
$
sudo chmod 0755 ~/.ssh


Использование X11

Войдите в систему на удаленной машине, добавив флаг -X, если опция ForwardX11 не включена в конфигурационном файле клиента:
$ ssh -X пользователь@узел

Если вы получаете ошибки при попытке запуска графических приложений, попробуйте опцию ForwardX11Trusted:

$ ssh -Y пользователь@узел


На клиенте включите опцию ForwardX11 либо добавив флаг -X в командной строке для необходимых подключений




Если вы получите ошибки "Cannot open display", попробуйте выполнить следующую команду от имени обычного пользователя:
$ xhost +

эта команда позволит выполнять проброс приложений X11 любому пользователю. Чтобы ограничить проброс конкретным хостом:
$ xhost +имя_хоста


Если вы получите ошибку "X11 forwarding request failed on channel 0" при подключении (и лог-файл сервера /var/log/errors.log будет содержать строку "Failed to allocate internet-domain X11 display socket"), удостоверьтесь, что пакет xorg-xauth установлен.

Присвоение значения inet может исправить проблемы с клиентами Ubuntu при использовании IPv4.

Для запуска приложений X от имени других пользователей на сервере SSH вам необходимо добавить (xauth add) строку аутентификации, взятую из xauth list пользователя, вошедшего в систему.

Для использования альтернативных шифров запустите SSH с флагом -c:
$ ssh -c arcfour,blowfish-cbc пользователь@адрес-пользователя

Чтобы использовать их постоянно, добавьте следующую строку под необходимым хостом в /etc/ssh/ssh_config:
Ciphers arcfour,blowfish-cbc


Поддержание подключения

Если вы не совершаете каких-либо действий, будет выполнен автоматический выход из сессии ssh. Для поддержания подключения в активном состоянии добавьте следующую строку в ~/.ssh/config или /etc/ssh/ssh_config клиента:
ServerAliveInterval 120

В этом случае на сервер будет посылаться сигнал "keep alive" каждые 120 секунд.

С другой стороны, для поддержания в активном состоянии входящих подключений, вы можете прописать
ClientAliveInterval 120


Изменение номера порта SSH для активации через сокет (sshd.socket)

Создайте файл /etc/systemd/system/sshd.socket.d/port.conf со следующим содержанием:
[Socket]
# Disable default port
ListenStream=
# Set new port
ListenStream=12345
 

Диагностика проблем подключения
$
ssh -vvv user@host


https://vds-admin.ru/ssh/nastroika-servera-ssh-vo-freebsd-fail-sshdconfig
https://wiki.archlinux.org/index.php/Secure_Shell_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

Комментарии