Небольшое введение в ssh

Небольшое введение в SSH

Я уверен, что многим приходилось работать с SSH. Раньше я делал некоторые записи для себя, чтобы не забыть основные команды и недавно нашел эти заметки, и решил собрать их в одну небольшую статью. Надеюсь, что эти шпаргалки помогут и вам!

Мы рассмотрим, основные функции, научимся управлять ключами, копировать файлы/папки через ssh, попробуем исполнить какой-нибудь скрипт удаленно.

SSH Ключи

Наверняка, вы уже знаете, что ходить на сервер по ssh можно не только по паролю, но и по своему ключику. Ключ состоит из пары: {PublicKey, PrivateKey}. PublicKey кладется на сервер, а точнее записывается в файл authorized_keys, а PrivateKey хранится у вас в каталоге (И вообще должен держаться в секрете). При попытке зайти на сервер по ssh происходит, примерно, следующее: сервер проверяет файл authorized_keys, если ключ найден, то сервер отправляет клиенту сообщение, которое зашифрованно найденным публичным ключом клиента. Клиент, в свою очередь, должен расшифровать сообщение, но уже с помощью своего приватного ключа, если сообщение расшифровано, то правильность ключей, считается подтвержденной и пользователь успешно заходит на сервер. Если возникли вопросы по тому как происходит шифровани и расшифрование, на каких ключах происходят операции, то можно пробежаться по статье "Алгоритм шифрования RSA на пальцах".

Генерация SSH ключа

Итак, как получить ту самую пару, делается это достаточно просто - с помощью утилиты ssh-keygen (Не забывайте про секретную фразу приватного ключа, она обязательно должна быть). Полный список опций можно посмотреть командой man ssh-keygen. Приведем основные:

"-t" - команда ssh-keygen, в общем работает с 3 типами ключей:
RSA 1 - для SSH версии 1
RSA - для SSH версии 2
DSA - для SSH версии 2

"-b" - длина ключа в битах
RSA - длина ключа по-умолчанию, 2048 бит
DSA - длина 1024 бита

"-l" - для просмотра отпечатка private ключа

Попробуйте сгенерировать пару следующей командой: ssh-keygen -t rsa -b 4096, при генерации введите секретную фразу. Маленько задание: попробуйте поменять свою секретную фразу (Подсказка: ключ p).

Авторизация по SSH ключу

Достаточно легко можно ходить по SSH без пароля, достаточно добавить свой открытый ключ на сервер в файл ~/.ssh/authorized_keys. Необходимо убедиться, что у посторонних пользователей нет возможности писать в файл authorized_keys:

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

Если ssh на нестандартном порту, то выполняем следующую команду:

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

Команда scp позволяет скопировать файл с локальной машины на сервер и наоборот. Например, копирование на сервер:

Копирование с сервера на локальную машину:

Чтобы скопировать папку нужно добавить ключ "-r", аналогично команде cp

Удаленное выполнение команд

Общий принцип :

Например, чтобы перезагрузить сервер (Помните о правах пользователя user):

Можно выполнить несколько последовательных команд:

или так:

Можно даже выполнить целый скрипт :

Заключение

Сегодня мы разобрали некоторые моменты работы с ssh, в основном мы затрагивали клиентскую часть, не стоит забывать про настройку ssh на сервере (etc/ssh/sshd_config). Поправьте меня, если я где-то ошибся. Надеюсь, эта заметка оказалась полезной 🙂