SSH

Описание

  • Соединение по SSH подразумевает обмен ключами

    • Пользователь с помощью ssh-keygen генерирует два ключа: приватный и публичный

    • Приватный ключ пользователь хранит у себя

    • Публичный ключ отдается серверу через ssh-copy-id

  • При установке SSH сессии от сервера формируется сообщение, зашифрованное публичным ключом пользователя

  • Пользователь расшифровывает это сообщение своим приватным ключом и отправляет ответное сообщение серверу, устанавливая соединение

  • Факт того, что приватным ключом дешифровано сообщение подтверждает легитимность сессии и ее участников

Настройка SSH

  • ssh-keygen создает пару приватного\публичного ключа

    • Установка пароля на приватный ключ повышает безопасность, но снижает удобство пользования

  • ssh-copy-id копирует публичный ключ на целевой сервер

  • ssh-agent /bin/bash позволяет хранить в кэше шелла пароль приватного ключа

  • ssh-add добавляет текущий пароль в кэш

[root@centos8 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:56RRDfDqUEZCSp632rhEKnLoc6huJ6vBqPtdLBFvkmc root@centos8
The key's randomart image is:
+---[RSA 3072]----+
|    ..o o..      |
|   o o o . o     |
|    = . o o .    |
|     = + o       |
|    = E S o      |
|o. o @ o *       |
|*.+ = + o .      |
|+O = +           |
|X*B o            |
+----[SHA256]-----+

Опции SSH

  • Опции сервера хранятся в /etc/ssh/sshd_config

  • Опции клиента хранятся в /etc/ssh/ssh_config

  • Можно поменять порт (обычно 22)

  • Опция PermitRootLogin - позволяет логиниться по рут правами, по-умолчанию включена

  • Опция PubkeyAuthentication - аутентификация по публичному ключу, по-умолчанию включена

  • Опция PasswordAuthentication - аутентификация по паролю

  • Опция X11Forwarding - передача графического интерфейса

  • Настройка sshd требует перезагрузки демона

    • systemctl restart sshd

Копирование файлов

  • При помощи sshd можно передавать файлы по сети, обеспечивая безопасность этой передачи

  • Для этого используется утилита scp

    • scp file1 file2 student@remoteserver:/home/student скопирует файлы на удаленный сервер

    • scp -r root@remoteserver:/tmp/files . - копирование файлов с удаленного сервера в текущую директорию рекурсивно

  • sftp обеспечивает работу FTP клиента при помощи SSH

    • sftp 1.1.1.1 - подключение к серверу

    • put /my/file - выгрузит файл на FTP сервер

    • get /your/file - загрузит файл с FTP сервера

    • exit закрывает sftp сессию

Синхронизация файлов

  • rsync использует sshd для синхронизации файлов

  • Если искомый и конечный файлы уже созданы, то rsync будет только синхронизировать разность

  • rsync имеет множество опций, базовые из которых:

    • -r - рекурсивно синхронизировать все дерево директории

    • -l - синхронизация символьных ссылок

    • -p - сохраняет символьные ссылки

    • -n - тест перед синхронизацией

    • -a - режим архивирования, равнозначный -rlptgoD

    • -A - режим архивирования с синхронизацией ACL

    • -X - синхронизация контекста SELinux

  • rsync -ar root@serverip:/etc /tmp - синхронизация папки /etc удаленной машины в папку /tmp локальной машины

Last updated

Was this helpful?