Подключение к серверу по SSH

Цель работы

Научиться использовать удаленный доступ к серверу Linux по протоколу SSH.

Подготовка

Для начала работы вам необходимо:

  • знать IP-адрес удаленного сервера
  • знать логин пользователя
  • скачать файл с приватным (частным) ключом
  • знать парольную фразу к ключу

Данную лабораторную работу можно выполнять с помощью:

  • Windows 10/11:
    • командной строки Windows (cmd.exe)
    • Windows Powershell
    • Git Bash (входит в состав Git)
  • Windows 7:
    • Git Bash (входит в состав Git)
  • Mac OS X
    • любой эмулятор терминала, включая стандартный системный терминал
  • Linux
    • любой эмулятор терминала

Далее в тексте это приложение будет называться терминал.

В любом терминале работает автодополнение. Его использвание позволяет ускорить ввод имен файлов и каталогов, а также исключить ошибки в их написании. Чтобы использовать автодополнение введите первые несколько символов имени файла, а затем один или несколько раз нажмите клавишу Tab.

Ход работы

  1. Откройте терминал

  2. Проверьте доступность сервера используя команду ping

    ping <адрес сервера>
    
  3. Перейдите в каталог куда скачали файл с приватным ключом. По умолчанию терминал открывается в домашнем каталоге пользователя, обычно каталог для скачивания называется Downloads:

     cd Downloads
    

    Команда cd (сокращение от change directory) изменяет текущий каталог. Помните что терминал в Linux и Mac OS X чувствителен к регистру символов.

    Для того чтобы проверить текущий каталог используйте команду pwd (сокращение от path to working directory).

    Помните, что в Windows разделителем каталогов является символ \, а во всех остальных ОС (а также в Git Bash) — символ /.

    Также нужно помнить, что в Windows полный путь должен начинаться с буквы диска (например C:), а во всех остальных ОС (а также в Git Bash) — нет.

    Поэтому полный путь к каталогу может выглядеть так:

    • в Windows: C:\Users\Student\Downloads
    • в Git Bash: /C/Users/Student/Downloads
    • в Mac OS X / Linux так: /home/student/Downloads
  4. Убедитесь, что файл с ключом присутствует в текущем каталоге (в ряде случаев вместо ls используется команда dir):

     ls <имя файла приватного ключа>
    

    Если файл присутствует, то должно отобразиться имя файла без сообщий об ошибке. Если сообщение об ошибке есть — перепроверьте каталог и имя файла приватного ключа.

    Команда ls (сокращение от list) отображает список файлов в текущем каталоге.

    В Mac OS X / Linux у нее есть следующие аргументы:

    • -a либо --all — отображает все файлы включая те, названия которых начинаются с точки (по умолчанию они считаются скрытыми)
    • -l — выводит информацию в виде таблицы (т.н. длинный формат)

    Команда ls позволяет комбинировать их (т.е. можно писать ls -la или ls -al). Также команда ls имеет и другие аргументы. Чтобы увидеть полный список используйте ключ --help.

  5. Подключитесь к серверу с клиента SSH:

     ssh -i <приватный ключ> <логин пользователя>@<адрес сервера>
    

    Команда ssh (сокращение от secure shell) — позволяет:

    • управлять сервером (с помощью интерфейса командной строки)
    • копировать файлы
    • пробрасывать произвольное TCP-соединение (в том числе динамически)

    Команда ssh может аутентифицировать пользователей с помощью логина и пароля, а также с помощью ключей асимметричного шифрования (с помощью алгоритмов RSA, DSA, ECDSA, EdDSA и др.). Аутентификация с помощью ключей асимметричного шифрования позволяет защитится от перебора пароля методом грубой силы и значительно повысить степень безопасности удаленного доступа к серверам.

    Ключ -i используется для указания приватного ключа асимметричного шифрования.

    При подключении нужно указать логин (до символа @) и адрес сервера (после символа @).

  6. Создайте собственного пользователя:

     sudo useradd -m -s /bin/bash <имя пользователя>
    

    команда sudo (сокращение от superuser do) — позволяет запустить команду от имени другого пользователя (например от имени админа, т.е. root)

    команда useradd — создает нового пользователя

    ключ -m — создает домашний каталог пользователя

    ключ -s — задает путь к оболочке (/bin/bash — это стандартная оболочка в Linux)

  7. Запустите оболочку от имени созданного пользователя:

     sudo -i -u <имя пользователя>
    

    ключ -i у команды sudo позволяет запустить интерактивный сеанс работы

    ключ -u у команды sudo указывает имя пользователя от имени которого нужно запустить команду (или сеанс работы)

  8. Создайте каталог .ssh

     mkdir .ssh
    
  9. Откройте новый терминал на локальном компьютере и сгенерируйте пару ключей асимметричного шифрования:

     ssh-keygen -f <имя ключа>
    

    команда ssh-keygen — генерирует ключи асимметричного шифрования

    ключ -f позволяет задать имя файла приватного ключа

    ключ -C задает комментарий

    В результате выполнения команды будут создана пара ключей (приватный и публичный ключи) асимметричного шифрования. Публичный ключ записывается в файл с расширением .pub.

  10. Выведите содержание публичного ключа в терминал:

    для Mac OS X / Linux / Git Bash:

    cat <файл публичного ключа>
    

    для командной строки Windows:

    type <файл публичного ключа>
    

    для Windows Powershell:

    Get-Content <файл публичного ключа>
    

    Аккуратно выделите содержимое публичного ключа (должно начинаться на ssh- заканчиваться на комментарий) без пробелов по краям.

  11. На сервере откройте в текстовом редакторе файл ~/.ssh/authorized_keys:

    nano ~/.ssh/authorized_keys
    

    и добавьте строку с публичным ключом.

    Закройте текстовый редактор nano (для этого нажмите Ctrl+X) и сохраните изменения.

  12. Подключитесь к серверу под именем вновь созданного пользователя с помощью закрытого ключа

    Сделайте скриншот окна терминала так чтобы была видна команда подключения и её результат.

  13. Скопируйте произвольный файл с локального компьютера на сервер

    Для этого на локальном компьютере в терминале выполните:

    scp -i <приватный ключ> <имя файла источника> <имя пользователя>@<адрес сервера>:<имя файла приёмника>
    

    команда scp (сокращение от secure copy) — копирование файлов по протоколу SSH.

    Сделайте скриншот окна терминала так чтобы была видна команда копирования и её результат.

  14. Скопируйте произвольный файл с сервера на локальный компьютер

    Для этого на локальном компьютере в терминале выполните:

    scp -i <приватный ключ> <имя пользователя>@<адрес сервера>:<имя файла источника> <имя файла приёмника>
    

    Сделайте скриншот окна терминала так чтобы была видна команда копирования и её результат.

Отчётность

Для подтверждения выполнения лабораторной работы отправьте созданные скриншоты преподавателю.

Дополнительное задание

Данное задание не обязательно к выполнению.

Установите на локальный компьютер программу Filezilla и попробуйте подключиться к серверу по SSH (порт 22) под новым пользователем которого вы создали. Проверьте как происходит копирование файлов в обеих направлениях с помощью этой программы.