linux:network:ssh
Различия
Показаны различия между двумя версиями страницы.
| linux:network:ssh [2026/10/03 10:49] – создано Кирилл Молчанов | linux:network:ssh [2026/10/03 10:49] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== OpenSSH ====== | ||
| + | ---- | ||
| + | |||
| + | ===== О OpenSSH ===== | ||
| + | |||
| + | OpenSSH (Open Secure Shell - Открытая безопасная оболочка) - Набор программ, | ||
| + | |||
| + | ===== Установка OpenSSH ===== | ||
| + | |||
| + | Устанавливаем OpenSSH: | ||
| + | <code bash> | ||
| + | sudo apt install openssh-client openssh-server openssh-sftp-server | ||
| + | </ | ||
| + | |||
| + | ===== Подключение по SSH ===== | ||
| + | |||
| + | Подключиться к серверу: | ||
| + | <code bash> | ||
| + | ssh user@host | ||
| + | </ | ||
| + | |||
| + | * **user** - имя пользователя на удаленном сервере | ||
| + | * **host** - IP-адрес или доменное имя удаленного сервера | ||
| + | |||
| + | Подключиться к серверу по нестандартному порту, используем опцию **-p**: | ||
| + | <code bash> | ||
| + | ssh -p 0000 user@host | ||
| + | Или | ||
| + | ssh user@host -p 0000 | ||
| + | </ | ||
| + | |||
| + | ===== Копирование файлов и каталогов через SSH ===== | ||
| + | |||
| + | ==== С локального ПК на удалённый сервер ==== | ||
| + | |||
| + | Скопировать файл: | ||
| + | <code bash> | ||
| + | scp файл.txt user@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать каталог, | ||
| + | <code bash> | ||
| + | scp -r каталог user@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать файл по нестандартному порту, используем опцию **-P**: | ||
| + | <code bash> | ||
| + | scp -P 0000 файл.txt user@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать каталог по нестандартному порту, используем опции **-P** **-r**: | ||
| + | <code bash> | ||
| + | scp -P 0000 -r каталог user@host:/ | ||
| + | </ | ||
| + | |||
| + | ==== С удалённого сервера на локальный ПК ==== | ||
| + | |||
| + | Скопировать файл: | ||
| + | <code bash> | ||
| + | scp user@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать каталог, | ||
| + | <code bash> | ||
| + | scp -r user@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать файл по нестандартному порту, используем опцию **-P**: | ||
| + | <code bash> | ||
| + | scp -P 0000 user@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать каталог по нестандартному порту, используем опции **-P** **-r**: | ||
| + | <code bash> | ||
| + | scp -P 0000 -r user@host:/ | ||
| + | </ | ||
| + | |||
| + | ==== С одного сервера на другой ==== | ||
| + | |||
| + | Скопировать файл: | ||
| + | <code bash> | ||
| + | scp user1@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать каталог, | ||
| + | <code bash> | ||
| + | scp -r user1@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать файл по нестандартному порту, используем опцию **-P**: | ||
| + | <code bash> | ||
| + | scp -P 0000 user1@host:/ | ||
| + | </ | ||
| + | |||
| + | Скопировать каталог по нестандартному порту, используем опции **-P** **-r**: | ||
| + | <code bash> | ||
| + | scp -P 0000 -r user1@host:/ | ||
| + | </ | ||
| + | |||
| + | === Важные нюансы === | ||
| + | |||
| + | Авторизация: | ||
| + | При выполнении команды система запросит пароль сначала для первого сервера, | ||
| + | |||
| + | Как передаются данные? | ||
| + | Данные будут идти по цепочке: | ||
| + | |||
| + | ===== Выполнение команд без входа в интерактивную сессию ===== | ||
| + | |||
| + | Выполнить команду(ы): | ||
| + | <code bash> | ||
| + | ssh user@host "ls -lh" | ||
| + | ssh user@host "free -mh" | ||
| + | </ | ||
| + | |||
| + | ===== Настройка OpenSSH ===== | ||
| + | |||
| + | Настраиваем конфиг **sshd_config**: | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | ==== Меняем стандартный порт на свой ==== | ||
| + | |||
| + | Находим строку **#Port 22**: | ||
| + | |||
| + | Раскомментируем строку **#Port 22**. Где **Port 22** меняем на свой. | ||
| + | |||
| + | Пример: | ||
| + | |||
| + | Обращаем внимание: | ||
| + | <code bash> | ||
| + | sudo ufw allow 0000 | ||
| + | </ | ||
| + | |||
| + | ==== Запрет входа по SSH для пользователя Root ==== | ||
| + | |||
| + | Найдите строку **PermitRootLogin**. | ||
| + | |||
| + | Раскомментируйте строку **PermitRootLogin yes** (если она закомментирована) | ||
| + | |||
| + | Измените её значение с **yes** на **no**. | ||
| + | |||
| + | ==== Максимальное количество открытых сессий для SSH ==== | ||
| + | |||
| + | Найдите строку **MaxSessions**. | ||
| + | |||
| + | Раскомментируйте строку **MaxSessions 10** (если она закомментирована) | ||
| + | |||
| + | Измените её значение с **10** на значение, | ||
| + | |||
| + | ==== Максимальное количество попыток ввода пароля за одну сессию ==== | ||
| + | |||
| + | Найдите строку **MaxAuthTries**. | ||
| + | |||
| + | Раскомментируйте строку **MaxAuthTries 6** (если она закомментирована) | ||
| + | |||
| + | Измените её значение с **6** на значение, | ||
| + | |||
| + | ==== Указать время ввода пароля для SSH ==== | ||
| + | |||
| + | Время, в течение которого пользователь должен успеть успешно авторизоваться на сервере. | ||
| + | |||
| + | Найдите строку **LoginGraceTime**. | ||
| + | |||
| + | Раскомментируйте строку **LoginGraceTime 2m** (если она закомментирована) | ||
| + | |||
| + | Измените её значение с **2m** на значение, | ||
| + | |||
| + | ==== Запрет входа по паролю ==== | ||
| + | |||
| + | Если вы используйте **SSH-ключи** для авторизации, | ||
| + | |||
| + | Найдите строку **PasswordAuthentication**. | ||
| + | |||
| + | Измените её значение с **yes** на **no**. | ||
| + | |||
| + | Сохраняем файл. | ||
| + | |||
| + | Перезагружаем SSH: | ||
| + | <code bash> | ||
| + | sudo systemctl restart sshd | ||
| + | </ | ||
| + | |||
| + | Подключаемся: | ||
| + | <code bash> | ||
| + | ssh root@localhost -p 0000 | ||
| + | </ | ||
| + | |||
| + | ===== Генерация SSH ключей ===== | ||
| + | |||
| + | * [[..: | ||
| + | * [[..: | ||
