Практическая работа - удаленная работа с Linux через SSH

3 мин на чтение (5.127 символов)

Цель работы

Продемонстрировать умение работать с командной строкой Linux с удаленной машиной по протоколу SSH.

Основное задание

  1. Убедитесь, что на виртуальной машине установлен и запущен SSH-сервер.
  2. В программе Putty (или любом другом SSH-клиенте), запущенной на хост-машине подключаемся по SSH на нужный IP к виртуальной машине и далее работаем с системой только через SSH
  3. Отображаем содержимое /etc/apt/sources.list, используя команду cat
  4. С её же помощью и символа “>” создаем файл в домашней директории пользователя.
  5. Отображаем список процессов.
  6. Запускаем мониторинг ресурсов системы.
  7. Обновляем кэш менеджера пакетов apt-get.
  8. Установите удаленно какой-либо пакет из репозитория на ваш выбор.
  9. Выполните копирование файла по протоколу SSH с одного компьютера на другой.
  10. Перезагрузить удаленный сервер через SSH.

Методические указания

ssh-agent

При работе с ключами возможны две неудобные ситуации:

  1. Если при созданиия ключа вы указали passphrase (пароль для ключа), то вам придется вводить пароль при каждом подключении.
  2. Если у вас есть несколько ключей для разных целей, то при соединении по ssh придется указывать нужный ключ вручную

ssh-agent решает эти проблемы. Этот агент аутентификации (authentication agent) работает на фоне в *nix-системах. В зависимости от системы, вам, возможно, придется установить и настроить его автозапуск самостоятельно.

Если добавить ключ к агенту, то:

  1. для него больше не будет спрашиваться passphrase
  2. не нужно будет вводить ключ вручную — он будет автоматически использован при соответствующем подключении

ssh-add /home/demo/.ssh/id_rsa добавит ключ id_rsa в запущенный в системе агент. Если у него есть passphrase, то агент попросит ввести его.

Если запустить ssh-add без аргументов, то будут добавлены ключи ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 и ~/.ssh/identity.

Список добавленных в агент ключей можно посмотреть командой ssh-add -L:

1
2
3
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC91r/+5WEQHcxVMrxpP9jKuONjlrnEHshfG3v/ab2NKDSljdskODOIsdhaaoDoiSADhAaoDISHasoiDiASisjadOHISDdKJDASHSidshIHDSIHDIAsdjasAs7XG/drBhi16zQ2e8VcLD7bVQS1Cpo0O1tP+93YQBvcIE02RltqVKYo7BlgCaJzpdowK8fHSzpfCYsEFjdjosOjfdsjdjkAJOKkKKHJHhaIiAiaihsiIoqkpqdmlnvnuuUSCaAS8aDhajiadiiAahhakKAKDHAKurmD08jnX9HfH/d15pLK/Glo1Su6iEOU3bW8k92QlY54pPFLKiNRPFuUryE5md7T /Users/demo/.ssh/some_key.pem
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsLC9WpSZ/9YpQ2z1FTSsORcP+ohzCdVjYaoc3C0fRnUbkp4SnvMHFTHNFFod0FhV0cQcOLvBsZAK/0tUPIXeDDFvYD70r5i0AsQbqA0k7gK3b3MP7tmnPxMHd607TI+1FMO54Yig0vnpZOgKmgCsxWq6tckwyLB91BlPiGxLBZiu5yPDIguEQCSnAwkF0vjqrNGsoHB4+fkj0USfjiifsjihf39hifSIHiJFHSijshfj39jfsjisfiisfiissr893IFsifijfsjSOIiAShadfhssU0q0JpjaDEWcMmYXmuz3xSnbhkueGLBXMU2zXDFDWCDSHq9/oRr29UAfVaHAMw== /Users/demo/.ssh/id_rsa

ssh-agent привязан к сессии. Поэтому, например, если перезагрузить компьютер, то ключи нужно будет добавлять в агент заново.

Форвардинг (проброс) ключей

Если вы подключились к удаленному серверу X, и с него хотите подключиться к другому серверу Y, например, чтобы сделать git pull с GitHub’а, то придется держать копию ваших ключей на сервере X.

Утилита ssh с флагом -A позволяет «пробросить» ключи с подключаемой машины в удаленную:

1
$ ssh -A ivan@52.307.149.244

Ключи, добавленные к агенту аутентификации (ssh-agent) станут доступными на удаленном сервере. При этом файлы-ключи физически не будут находиться на сервере.

Контрольные вопросы

  1. Для чего нужен протокол SSH?
  2. Почему этот протокол называют защищенным?
  3. Какая информация нужна для того, чтобы подключиться к удаленной машине?
  4. Из чего состоит пара ключей?
  5. Каковы рекомендуемые действия по безопасному использованию SSH?
  6. Как установить и настроить пакета OpenSSH в Linux и Windows?

Задания для самостоятельного выполнения

  1. Выполните настройку Вашего и виртуального компьютеров так, чтобы возможно было входить с одного на другой по открытому ключу, без явного запроса пароля, по протоколу SSH.
  2. Создайте файл в домашней директории локальной машины. Скопируйте его на удаленную машину при помощи утилиты scp. Удалите исходный файл. Скопируйте файл обратно.
  3. Измените порт по умолчанию на удаленной машине для сервера SSH. Перезапустите сервер. Проверьте корректность подключения.
  4. Сохраните свое подключение на локальной машине при помощи конфигурационного файла. Проверьте работоспособность подключения по имени.
  5. (*) Проанализировать сравнительную скорость ssh-соединения, выполнив следующие замеры:
    1. Выполнить передачу файла через FTP с помощью утилиты wget. Проанализировать проходящие пакеты с помощью утилиты tcpdump(-ХХ). Запомнить скорость передачи.
    2. Выполнить передачу через ssh. Проанализировать проходящие пакеты с помощью утилиты tcpdump(-ХХ). Запомнить скорость передачи. Сравнить передаваемые пакеты и скорости передачи данных.
    3. Включить сжатие ssh и повторить замер скорости. В каждом тесте анализировать результаты для файла состоящего из нулей и для файла состоящего из случайных последовательностей (dd if= /dev/urandom of=file ds=1M count=10), для текстового конфигурационного файла или бинарного файла.

Дата изменения: