А дальше что?
В доке не написано, что дальше делать
Как ему сказать какие алгоритмы я выбрал из его списка?
И почему он мне не отвечает какие ключи выбрал он из моего списка?
И еще я не понимаю зачем поле first_kex_packet_follows?
Здравствуйте, TailWind, Вы писали:
TW>А дальше что? TW>В доке не написано, что дальше делать
Там написано: предоллагается первый из списка + остальные которые может.
The first algorithm in each name-list MUST be the preferred (guessed)
algorithm.
Как только первые строки совпали ехать дальше.
After the SSH_MSG_KEXINIT message exchange, the key exchange
algorithm is run. It may involve several packet exchanges, as
specified by the key exchange method.
Once a party has sent a SSH_MSG_KEXINIT message for key exchange or
re-exchange, until it has sent a SSH_MSG_NEWKEYS message (Section
7.3), it MUST NOT send any messages other than:
o Transport layer generic messages (1 to 19) (but
SSH_MSG_SERVICE_REQUEST and SSH_MSG_SERVICE_ACCEPT MUST NOT be
sent);
o Algorithm negotiation messages (20 to 29) (but further
SSH_MSG_KEXINIT messages MUST NOT be sent);
o Specific key exchange method messages (30 to 49).
The provisions of Section 11 apply to unrecognized messages.
Note, however, that during a key re-exchange, after sending a
SSH_MSG_KEXINIT message, each party MUST be prepared to process an
arbitrary number of messages that may be in-flight before receiving a
SSH_MSG_KEXINIT message from the other party.
TW>Как ему сказать какие алгоритмы я выбрал из его списка?
Если не совпали слать еще раз, пока не совпадут
TW>И почему он мне не отвечает какие ключи выбрал он из моего списка?
Первые (совпадающие) TW>И еще я не понимаю зачем поле first_kex_packet_follows?
Это значить что педположение высланое второй стороной нормальное, иначе надо слать другое предположение.
Как оба согласились, выбраны первые. ехать дальше к обмену ключами.
_>>Как только первые строки совпали ехать дальше. TW>Похоже, что не так работает
Рабочая гипотеза:
Нужно сначала убрать из списков все элементы, которых нет у партнёра (в памяти, не передавая)
И только потом сравнивать
То есть клиенту достаточно просто получить списки сервера
Выбрать из них один нужный ему вариант
И отправить список с одним элементом в качестве подтверждения
Сервер на это даже отвечать не будет. Посчитает, что всё согласованно
Здравствуйте, TailWind, Вы писали:
TW>Начинается ) TW>Чтобы впитать знания и подходы, которые там есть TW>А может и для себя какую-нибудь полезную утилитку напишу
Он очень сложный. Слишком сложный для начинающего. Скажем, я задачу написания с нуля SSH оцениваю, как в несколько раз более сложную и трудоёмкую, чем задачу написания с нуля работоспособного стека TCP/IP.
TW>Ещё чтобы лучше понимать что происходит в SSH TW>Например, как работает port forwarding
Можно взять хорошую библиотеку, реализующую SSH, и попрактиковаться.
Здравствуйте, TailWind, Вы писали:
Pzz>>Он очень сложный
TW>Да нормальный он TW>Примеров только нет с расшифровкой, за что каждый байт отвечает TW>Главное через шифрование пробиться
Pzz>>>Он очень сложный
TW>>Да нормальный он TW>>Примеров только нет с расшифровкой, за что каждый байт отвечает TW>>Главное через шифрование пробиться
Pzz>Я знаю уровень сложности и того и другого.
Всё получилось
Даже написал аналог вашего Froxy
Хотя и не расчитывал на это
Думал ограничиться SFTP и удаленным выполнением команд на сервере
1.5 месяца ушло, судя по дате первого сообщения этой темы