Доступ по SSH: различия между версиями
м (Petr-akhlamov переименовал страницу SSHConfig в Доступ по SSH) |
|||
(не показано 18 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
{{Note|Обратите внимение, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам. Официальная и более подробная [[SSH|'''документация здесь''']].}} | |||
{{note|Проверено на Starterkit P10 Mate (весенний) 25.07.2022}} | |||
С помощью '''[[SSH]]-сервера''' можно удаленно управлять сервером через консоль (<nowiki>ssh://-соединение</nowiki>) и передавать файлы (sftp-сервер). | С помощью '''[[SSH]]-сервера''' можно удаленно управлять сервером через консоль (<nowiki>ssh://-соединение</nowiki>) и передавать файлы (sftp-сервер). | ||
В данной статье будут рассмотрены настройка доступа к терминалу (TODO: надо описать. В данный момент настройка терминального доступа не описана) и файлам через SSH. | |||
==Предварительный бэкап== | |||
На сервере переключаемся в режим суперпользователя: | На сервере переключаемся в режим суперпользователя: | ||
$ su - | $ su - | ||
И правим | Делаем на всякий случай бэкап конфига: | ||
# cd /etc/openssh | |||
# cp -a sshd_config sshd_config.bak | |||
И правим конфиг файл: | |||
# cd /etc/openssh | # cd /etc/openssh | ||
# mcedit sshd_config | # mcedit sshd_config | ||
Потом, если что-то пошло не так, удаляем измененный и восстанавливаем исходный: | |||
Потом, если что, удаляем измененный и восстанавливаем исходный: | |||
# cd /etc/openssh | # cd /etc/openssh | ||
# rm | # rm sshd_config | ||
# cp -a sshd_config.bak sshd_config | # cp -a sshd_config.bak sshd_config | ||
# service sshd reload | # service sshd reload | ||
Строка 21: | Строка 26: | ||
чтобы убедиться в том, что удалённый доступ к системе всё ещё функционирует. | чтобы убедиться в том, что удалённый доступ к системе всё ещё функционирует. | ||
==Доступ по SSH через сеть== | |||
Match User | Редактируем следующие значения: | ||
X11Forwarding | |||
AllowTcpForwarding | *Сетевой порт соединения. Раскомментируем эту строчку и, если нужно, можем изменить значение. | ||
PermitTTY | Port 22 | ||
*Максимальное количество открытых сеансов, разрешённых для одного сетевого подключения. (раскомментируем строчку) | |||
MaxSessions 3 | |||
*Параметр PubkeyAuthentication определяет, разрешена ли аутентификация на основе публичного ключа. (раскомментируем строчку) | |||
PubkeyAuthentication yes | |||
*Параметр PubkeyAcceptedKeyTypes определяет типы ключей, которые будут использоваться для аутентификации по открытому ключу (раскомментируем строчку) | |||
PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa-cert-v01@openssh.com,ssh-rsa,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256 | |||
*Параметр PasswordAuthentication разрешает доступ по паролю. Чтобы выключить и разрешить доступ только по ключу, поставьте no. | |||
PasswordAuthentication yes | |||
*Параметр PermitEmptyPasswords позволяет использовать пустые пароли. Это не безопасно! | |||
PermitEmptyPasswords no | |||
*Параметр ChallengeResponseAuthentication определяет, разрешается ли безпарольная аутентификация «вызов-ответ». | |||
ChallengeResponseAuthentication yes | |||
*Параметр ClientAliveInterval задает интервал (в секундах), с которым сервер отправляет клиенту сообщение keepalive. Keepalive — это сигнал, отправляемый для проверки активности клиента и его возможности отвечать. Если клиент не отвечает на сообщение keepalive в течение заданного интервала, сервер считает, что клиент больше недоступен. | |||
ClientAliveInterval 300 | |||
*Параметр ClientAliveCountMax определяет количество keepalive-сообщений, которые могут быть отправлены клиенту без получения ответа, прежде чем сервер завершит соединение. | |||
ClientAliveCountMax 3 | |||
*Параметр Subsystem определяет и настраивает внешнюю подсистему. В данном примере sftp. | |||
Subsystem sftp /usr/lib/openssh/sftp-server | |||
*Опция Match позволяет контролировать, кто и при каких обстоятельствах может входить в систему, определяя шаблон критериев, согласно которому будут применяться или не применяться остальные параметры | |||
Match User petr | |||
*Опция X11Forwarding определяет, разрешено ли туннелирование X11. | |||
X11Forwarding yes | |||
*Опция AllowTcpForwarding включает или выключает переадресацию портов | |||
AllowTcpForwarding yes | |||
*Опция PermitTTY указывает, разрешено ли выделение pty - pseudo-tty - устройство которое имеет функции физического терминала, фактически не будучи им. Например Xterm. | |||
PermitTTY yes | |||
Сохраняем файл и перезапускаем сервис: | |||
# systemctl restart sshd | |||
Подключение: | |||
Вводим в консоли '''ssh user@ip''': | |||
$ ssh petr@10.0.2.6 | |||
Система запросит разрешение на принятие SSH-ключа и ввод пароля. После этого у Вас будет консоль подключенного сервера. | |||
===Обмен файлами=== | ===Обмен файлами=== | ||
Обмен файлами с сервером будет происходить по протоколу SSH. | Обмен файлами с сервером будет происходить по протоколу SSH. | ||
Строка 35: | Строка 72: | ||
# mkdir /home/files | # mkdir /home/files | ||
Этот же каталог прописываем в ChrootDirectory. | Этот же каталог прописываем в ChrootDirectory. | ||
ChrootDirectory /home/files | |||
Даем себе полные права: | Даем себе полные права: |
Текущая версия от 00:00, 27 ноября 2024
С помощью SSH-сервера можно удаленно управлять сервером через консоль (ssh://-соединение) и передавать файлы (sftp-сервер).
В данной статье будут рассмотрены настройка доступа к терминалу (TODO: надо описать. В данный момент настройка терминального доступа не описана) и файлам через SSH.
Предварительный бэкап
На сервере переключаемся в режим суперпользователя:
$ su -
Делаем на всякий случай бэкап конфига:
# cd /etc/openssh # cp -a sshd_config sshd_config.bak
И правим конфиг файл:
# cd /etc/openssh # mcedit sshd_config
Потом, если что-то пошло не так, удаляем измененный и восстанавливаем исходный:
# cd /etc/openssh # rm sshd_config # cp -a sshd_config.bak sshd_config # service sshd reload
В любом случае при изменениях этого файла стоит обязательно:
- держать уже открытую рутовую сессию через достаточно надёжное соединение;
- перезапустить sshd;
- попытаться подключиться ещё одной рутовой сессией по ключу (либо пользовательской с поднятием привилегий, что несколько менее предпочтительно),
чтобы убедиться в том, что удалённый доступ к системе всё ещё функционирует.
Доступ по SSH через сеть
Редактируем следующие значения:
- Сетевой порт соединения. Раскомментируем эту строчку и, если нужно, можем изменить значение.
Port 22
- Максимальное количество открытых сеансов, разрешённых для одного сетевого подключения. (раскомментируем строчку)
MaxSessions 3
- Параметр PubkeyAuthentication определяет, разрешена ли аутентификация на основе публичного ключа. (раскомментируем строчку)
PubkeyAuthentication yes
- Параметр PubkeyAcceptedKeyTypes определяет типы ключей, которые будут использоваться для аутентификации по открытому ключу (раскомментируем строчку)
PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa-cert-v01@openssh.com,ssh-rsa,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256
- Параметр PasswordAuthentication разрешает доступ по паролю. Чтобы выключить и разрешить доступ только по ключу, поставьте no.
PasswordAuthentication yes
- Параметр PermitEmptyPasswords позволяет использовать пустые пароли. Это не безопасно!
PermitEmptyPasswords no
- Параметр ChallengeResponseAuthentication определяет, разрешается ли безпарольная аутентификация «вызов-ответ».
ChallengeResponseAuthentication yes
- Параметр ClientAliveInterval задает интервал (в секундах), с которым сервер отправляет клиенту сообщение keepalive. Keepalive — это сигнал, отправляемый для проверки активности клиента и его возможности отвечать. Если клиент не отвечает на сообщение keepalive в течение заданного интервала, сервер считает, что клиент больше недоступен.
ClientAliveInterval 300
- Параметр ClientAliveCountMax определяет количество keepalive-сообщений, которые могут быть отправлены клиенту без получения ответа, прежде чем сервер завершит соединение.
ClientAliveCountMax 3
- Параметр Subsystem определяет и настраивает внешнюю подсистему. В данном примере sftp.
Subsystem sftp /usr/lib/openssh/sftp-server
- Опция Match позволяет контролировать, кто и при каких обстоятельствах может входить в систему, определяя шаблон критериев, согласно которому будут применяться или не применяться остальные параметры
Match User petr
- Опция X11Forwarding определяет, разрешено ли туннелирование X11.
X11Forwarding yes
- Опция AllowTcpForwarding включает или выключает переадресацию портов
AllowTcpForwarding yes
- Опция PermitTTY указывает, разрешено ли выделение pty - pseudo-tty - устройство которое имеет функции физического терминала, фактически не будучи им. Например Xterm.
PermitTTY yes
Сохраняем файл и перезапускаем сервис:
# systemctl restart sshd
Подключение:
Вводим в консоли ssh user@ip:
$ ssh petr@10.0.2.6
Система запросит разрешение на принятие SSH-ключа и ввод пароля. После этого у Вас будет консоль подключенного сервера.
Обмен файлами
Обмен файлами с сервером будет происходить по протоколу SSH.
Создаем каталог:
# mkdir /home/files
Этот же каталог прописываем в ChrootDirectory.
ChrootDirectory /home/files
Даем себе полные права:
# chown petr:petr /home/files # chmod -R u+rwx /home/files
Подключаем его на Workstation:
- Открываем Caja
- Файл > Соединиться с сервером:
- IP
- Тип: SSH
- Папка: /home/files
- Имя пользователя: petr (учетка на сервере, которой мы дали права)
- Пароль: (соответствующий)
- Можно поставить галочку "Добавить закладку"
Примечания