Anon 32 Опубликовано: 22 ноября (изменено) Мне давно хотелось разобраться в работе протокола SSH, однако, это казалось очень сложной задачей, поэтому тогда я ограничился написанием клиента для древнего протокола telnet. Теперь же я решил разобраться в базовых принципах криптографии и накодить полноценный SSH-клиент под OpenComputers с нуля, включая все криптографичиские алгоритмы. Установить программу в 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-последовательностей по типу перемещения курсора и установки цвета текста, в связи с чем не все программы могут отображаться корректно. Изменено 22 ноября пользователем Anon захотелось 1 2 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах