Научиться использовать удаленный доступ к серверу Linux по протоколу SSH.
Для начала работы вам необходимо:
Данную лабораторную работу можно выполнять с помощью:
Далее в тексте это приложение будет называться терминал.
В любом терминале работает автодополнение. Его использование позволяет ускорить ввод имен файлов и каталогов, а также исключить ошибки в их написании. Чтобы использовать автодополнение, введите первые несколько символов имени файла, а затем один или несколько раз нажмите клавишу Tab.
Откройте терминал.
Проверьте доступность сервера, используя команду ping. Учтите, что отсутствие ответа на ping не обязательно означает, что сервер недоступен по SSH.
ping <адрес сервера>
Перейдите в каталог, в который скачали файл с приватным ключом. По умолчанию терминал открывается в домашнем каталоге пользователя, обычно каталог для скачивания называется Downloads:
cd Downloads
Команда cd (сокращение от change directory) изменяет текущий каталог. Помните, что терминал в Linux и Mac OS X чувствителен к регистру символов.
Для того чтобы проверить текущий каталог, используйте команду pwd (сокращение от path to working directory).
Помните, что в Windows разделителем каталогов является символ \, а во всех остальных ОС (а также в Git Bash) — символ /.
Также нужно помнить, что в Windows полный путь должен начинаться с буквы диска (например C:), а во всех остальных ОС (а также в Git Bash) — нет.
Поэтому полный путь к каталогу может выглядеть так:
C:\Users\Student\Downloads/C/Users/Student/Downloads/home/student/DownloadsУбедитесь, что файл с приватным ключом присутствует в текущем каталоге (в ряде случаев вместо ls используется команда dir):
ls <имя файла приватного ключа>
Если файл присутствует, то должно отобразиться имя файла без сообщений об ошибке. Если сообщение об ошибке есть — перепроверьте каталог и имя файла приватного ключа.
Команда ls (сокращение от list) отображает список файлов в текущем каталоге.
В Mac OS X / Linux у нее есть следующие аргументы:
-a либо --all — отображает все файлы, включая те, названия которых начинаются с точки (по умолчанию они считаются скрытыми)-l — выводит информацию в виде таблицы (т.н. длинный формат)Команда ls позволяет комбинировать их (т.е. можно писать ls -la или ls -al). Также команда ls имеет и другие аргументы. Чтобы увидеть полный список, используйте ключ --help.
Подключитесь к серверу с клиента SSH:
ssh -i <приватный ключ> <логин пользователя>@<адрес сервера>
Протокол SSH (сокращение от secure shell) обеспечивает защищённое удалённое подключение. С его помощью можно работать с командной строкой удалённого сервера, а также использовать связанные с SSH средства для передачи файлов и туннелирования соединений. Команда ssh позволяет:
Команда ssh может аутентифицировать пользователей с помощью логина и пароля, а также с помощью пар ключей: закрытый (приватный) и открытый (публичный). Аутентификация с помощью ключей позволяет защититься от перебора пароля методом грубой силы и значительно повысить степень безопасности удаленного доступа к серверам.
Закрытый (приватный) ключ — хранится на локальном компьютере и не передаётся другим людям.
Открытый (публичный) ключ — размещается на сервере в ~/.ssh/authorized_keys (где ~ означает домашний каталог пользователя).
Ключ -i используется для указания пути к приватному ключу.
При подключении нужно указать логин (до символа @) и адрес сервера (после символа @).
Создайте собственного пользователя:
sudo useradd -m -s /bin/bash <имя пользователя>
sudo passwd <имя пользователя>
id <имя пользователя>
команда sudo (сокращение от superuser do) позволяет запустить команду от имени другого пользователя (например, от имени админа, т.е. root)
команда useradd — создает нового пользователя
ключ -m — создает домашний каталог пользователя
ключ -s — задает путь к оболочке (/bin/bash — это стандартная оболочка в Linux)
команда passwd — задает пароль пользователя
команда id — запрашивает данные пользователя (используется для проверки)
Запустите оболочку от имени созданного пользователя:
sudo -i -u <имя пользователя>
ключ -i у команды sudo позволяет запустить интерактивный сеанс работы
ключ -u у команды sudo указывает имя пользователя, от имени которого нужно запустить команду (или сеанс работы)
Создайте каталог .ssh
mkdir ~/.ssh
Откройте новый терминал на локальном компьютере и сгенерируйте пару ключей:
ssh-keygen -f <имя ключа> -t ed25519 -C <комментарий>
команда ssh-keygen — генерирует пару ключей.
ключ -f позволяет задать имя файла приватного ключа.
ключ -t позволяет указать тип ключа (алгоритм), например rsa, ecdsa или ed25519.
ключ -C задает комментарий.
При запросе Enter passphrase задайте парольную фразу для защиты закрытого ключа и запомните её. При необходимости подтвердите её повторным вводом.
В результате выполнения команды будет создана пара ключей (приватный и публичный ключи). Публичный ключ записывается в файл с расширением .pub.
Выведите содержимое публичного ключа в терминал:
для Mac OS X / Linux / Git Bash:
cat <файл публичного ключа>
для командной строки Windows:
type <файл публичного ключа>
для Windows PowerShell:
Get-Content <файл публичного ключа>
Ключ имеет вид “тип_ключа ключ_в_кодировке_Base64 комментарий” (тип ключа при этом начинается с ssh-..). Аккуратно выделите содержимое публичного ключа (включая тип ключа и комментарий).
На сервере откройте файл ~/.ssh/authorized_keys в текстовом редакторе, например nano:
nano ~/.ssh/authorized_keys
и добавьте строку с публичным ключом.
Закройте текстовый редактор nano (для этого нажмите Ctrl+X) и сохраните изменения.
Подключитесь к серверу под именем вновь созданного пользователя с помощью приватного ключа (составьте команду и её аргументы самостоятельно). Если подключение выполнено успешно, в приглашении командной строки должно отображаться имя созданного пользователя.
Сделайте скриншот окна терминала так, чтобы была видна команда подключения и её результат.
Скопируйте произвольный файл с локального компьютера на сервер
Для этого на локальном компьютере в терминале выполните:
scp -i <приватный ключ> <имя файла источника> <имя пользователя>@<адрес сервера>:<имя файла приёмника>
команда scp (сокращение от secure copy) — копирование файлов по протоколу SSH.
Сделайте скриншот окна терминала так, чтобы была видна команда копирования и её результат.
Скопируйте произвольный файл с сервера на локальный компьютер
Для этого на локальном компьютере в терминале выполните:
scp -i <приватный ключ> <имя пользователя>@<адрес сервера>:<имя файла источника> <имя файла приёмника>
Сделайте скриншот окна терминала так, чтобы была видна команда копирования и её результат.
Для подтверждения выполнения лабораторной работы отправьте созданные скриншоты преподавателю.
Данное задание не обязательно к выполнению.
Установите на локальный компьютер программу Filezilla и попробуйте подключиться к серверу по SSH (порт 22) под новым пользователем, которого вы создали. Проверьте, как происходит копирование файлов в обеих направлениях с помощью этой программы.