Практическая работа - удаленная работа с Linux через SSH
Цель работы
Продемонстрировать умение работать с командной строкой Linux с удаленной машиной по протоколу SSH.
Основное задание
- Убедитесь, что на виртуальной машине установлен и запущен SSH-сервер.
- В программе Putty (или любом другом SSH-клиенте), запущенной на хост-машине подключаемся по SSH на нужный IP к виртуальной машине и далее работаем с системой только через SSH
- Отображаем содержимое /etc/apt/sources.list, используя команду cat
- С её же помощью и символа “>” создаем файл в домашней директории пользователя.
- Отображаем список процессов.
- Запускаем мониторинг ресурсов системы.
- Обновляем кэш менеджера пакетов apt-get.
- Установите удаленно какой-либо пакет из репозитория на ваш выбор.
- Выполните копирование файла по протоколу SSH с одного компьютера на другой.
- Перезагрузить удаленный сервер через SSH.
Методические указания
ssh-agent
При работе с ключами возможны две неудобные ситуации:
- Если при созданиия ключа вы указали passphrase (пароль для ключа), то вам придется вводить пароль при каждом подключении.
- Если у вас есть несколько ключей для разных целей, то при соединении по ssh придется указывать нужный ключ вручную
ssh-agent решает эти проблемы. Этот агент аутентификации (authentication agent) работает на фоне в *nix-системах. В зависимости от системы, вам, возможно, придется установить и настроить его автозапуск самостоятельно.
Если добавить ключ к агенту, то:
- для него больше не будет спрашиваться passphrase
- не нужно будет вводить ключ вручную — он будет автоматически использован при соответствующем подключении
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) станут доступными на удаленном сервере. При этом файлы-ключи физически не будут находиться на сервере.
Контрольные вопросы
- Для чего нужен протокол SSH?
- Почему этот протокол называют защищенным?
- Какая информация нужна для того, чтобы подключиться к удаленной машине?
- Из чего состоит пара ключей?
- Каковы рекомендуемые действия по безопасному использованию SSH?
- Как установить и настроить пакета OpenSSH в Linux и Windows?
Задания для самостоятельного выполнения
- Выполните настройку Вашего и виртуального компьютеров так, чтобы возможно было входить с одного на другой по открытому ключу, без явного запроса пароля, по протоколу SSH.
- Создайте файл в домашней директории локальной машины. Скопируйте его на удаленную машину при помощи утилиты scp. Удалите исходный файл. Скопируйте файл обратно.
- Измените порт по умолчанию на удаленной машине для сервера SSH. Перезапустите сервер. Проверьте корректность подключения.
- Сохраните свое подключение на локальной машине при помощи конфигурационного файла. Проверьте работоспособность подключения по имени.
- (*) Проанализировать сравнительную скорость ssh-соединения, выполнив следующие замеры:
- Выполнить передачу файла через FTP с помощью утилиты wget. Проанализировать проходящие пакеты с помощью утилиты tcpdump(-ХХ). Запомнить скорость передачи.
- Выполнить передачу через ssh. Проанализировать проходящие пакеты с помощью утилиты tcpdump(-ХХ). Запомнить скорость передачи. Сравнить передаваемые пакеты и скорости передачи данных.
- Включить сжатие ssh и повторить замер скорости. В каждом тесте анализировать результаты для файла состоящего из нулей и для файла состоящего из случайных последовательностей (dd if= /dev/urandom of=file ds=1M count=10), для текстового конфигурационного файла или бинарного файла.