Conchshell 2.8.0 (macOS + Linux)
Проксирование работает по-настоящему
Вкладка «Proxy» в диалоге подключения — с выбором HTTP/SOCKS4/SOCKS5, полями хоста, порта и учётных данных, переведённая на три языка — до сих пор была декорацией: введённые значения никогда не покидали интерфейс, не сохранялись и не доходили до сети. Слово «proxy» не встречалось ни в одной исполняемой строке серверной части.
Теперь поддерживаются SOCKS5, SOCKS4, SOCKS4a и HTTP CONNECT — для SSH, SFTP и RDP одинаково. Это стало возможно потому, что все соединения приложения теперь открываются через один общий транспорт; заодно исчезла третья копия кода подключения, из-за расхождения которых раньше ломалась авторизация SFTP по ключу.
Прямого подключения в обход прокси не бывает. Если прокси настроен, но недоступен — соединение не состоится, и в сообщении будет сказано, что молчит именно прокси, а не сервер. Это принципиально: тихий откат на прямое соединение означал бы, что вы считаете трафик проксированным, когда он идёт напрямую. Протоколы, которые маршрут не поддерживают (FTP, VNC), отказываются, а не игнорируют настройку.
Ошибки называют участок пути: не дозвонились до прокси, прокси отверг учётные данные (и это именно его учётные данные, а не сервера), прокси отказался соединять с целью.
Промежуточный хост для SSH
Появился jump host: вход на промежуточный сервер и оттуда — на целевой. Промежуточный хост проверяется тем же хранилищем отпечатков и под собственным ключом, то есть на одно подключение приходится два независимых решения о доверии. Проверяется он до того, как к целевому серверу уйдут любые учётные данные.
Если заданы и прокси, и промежуточный хост, прокси используется для связи с промежуточным.
Что нашли при проверке
Проверка велась через настоящие прокси-серверы, а не через собственные заглушки, и нашла две вещи, каждая из которых обесценила бы функцию:
- Библиотека SSH записывает буфер аутентификации в лог до шифрования, поэтому при включённом отладочном логировании пароль и пароль промежуточного хоста попадали в журнал открытым текстом.
- Неизвестный тип прокси считался отсутствием прокси — то есть подключением напрямую. Сработать это могло от опечатки в импортированном конфиге или от
socks4a, который серверная часть умеет, а список интерфейса ещё нет. Теперь это отказ с объяснением.
Тесты: Rust 569, интерфейс 1019.