Перейти к содержимому
Anon

SSH клиент на OpenComputers

Рекомендуемые сообщения

Мне давно хотелось разобраться в работе протокола SSH, однако, это казалось очень сложной задачей, поэтому тогда я ограничился написанием клиента для древнего протокола telnet. Теперь же я решил разобраться в базовых принципах криптографии и накодить полноценный SSH-клиент под OpenComputers с нуля, включая все криптографичиские алгоритмы.

 

9a18a70e-a7b7-4263-82ab-2ddb8893fcec

 

Установить программу в OpenOS можно командой 

wget -f https://raw.githubusercontent.com/Smok1e/oc-ssh/refs/heads/master/installer.lua /tmp/get-ssh.lua && /tmp/get-ssh.lua

 

Использование программы схоже с клентом OpenSSH. Для подключения к удаленному терминалу достаточно написать ssh user@address. Разумеется, можно сменить порт или включить логирование:

Usage: ssh [OPTIONS] destination [COMMAND]
Available options:
  -h, --help:        Print usage information and exit
  -v, --verbose:     Enable debug logging
      --port=<port>: Override port

Клиент поддерживает авторизацию по ключу. На данный момент из алгоритмов цифровой подписи реализован только Ed25519. Чтобы сгенерировать пару ключей, используйте команду ssh-keygen. По дефолту она запишет пару ключей в директорию /home/.ssh под названиями id_ed25519 и id_ed25519.pub. Публичный ключ соответствует формату OpenSSH и его можно спокойно вписать в конец файла ~/.ssh/authorized_keys на удалённой машине.

 

Приватный ключ, однако, не совместим с OpenSSH, поэтому скопировать имеющийся приватный ключ, сгенерированный OpenSSH, в OpenOS, не получится.

 

По аналогии с OpenSSH можно также создать файл конфигурации /home/.ssh/config. В нем можно прописать хосты для быстрого подключения в следующем формате:

{
    Host = {
        address = "192.168.1.128",
        port = 122,
        user = "smok1e",
        identity = /path/to/private/key
    }
}

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

 

На данный момент реализованы следующие криптографические алгоритмы:

  • X25519 для обмена ключами по Диффи-Хеллману
  • Ed25519 для цифровой подписи при проверке хоста и авторизации по ключу
  • AES128/192/256 в режиме CTR для шифрования между клиентом и сервером
  • HMAC-SHA2-224/256/384/512 для проверки подленности сообщений

Алгоритм сжатия не предусмотрен.

 

Хотя текущая реализация самого протокола SSH вполне достаточна для полноценной работы с удаленным терминалом, сам эмулятор терминала допилен не до конца. Разумеется, функционала встроенной в OpenOS библиотеки term.lua недостаточно для корректной обработки большинства современных консольных программ. По-хорошему необходима полноценная реализация xterm-совместимого терминала. Проблема в том, что как такового стандарта, описывающего все escape-последовательности, которые должен обрабатывать терминал, называющий себя xterm-ом, не существует. Более того, существует невообразимое количетво различных надстроек и модификаций, усложняющих разработку в разы. 

 

Пока что реализована только базовая обработка escape-последовательностей по типу перемещения курсора и установки цвета текста, в связи с чем не все программы могут отображаться корректно.

Изменено пользователем Anon
захотелось
  • Нравится 1
  • Одобряю 2
  • Спасибо 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...