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)
Узнать путь к файлу поможет команда:
$ 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)
Комментарии
Отправить комментарий