Это могло бы быть вопросом о непрограммировании.
Выставка:
1) Я использую Linux.
2) У меня есть две программы C++, "клиент" и "сервер"; они работают на различных машинах, они в настоящее время обсуждают tcpip. У меня есть исходный код к обеим программам.
3) Никакая программа действительно не буферизует по проверке потока / защита против человека в средних нападениях / Mac / шифрование.
4) Я не хочу добавлять этот дополнительный слой сложности к моим программам.
5) Я хочу иметь эти две программы, просто обсуждают ssh канал (но оба клиента и сервер работают на машинах, которые являются многопользовательскими; таким образом, если я просто открываю порты, другое использование может получить доступ к ним также).
Вопрос:
Что наименее навязчивый путь состоит в том, чтобы заставить client&server говорить друг с другом по безопасному каналу?
Спасибо!
, насколько решение по программированию GO, вам нужно OpenSSL или GNU TLS . Из этих двух последних гораздо более чисто написан (openssl имеет много ловушек).
Для действительно элегантного раствора используется OpenSSL через Boost :: Asio , но это решение, вероятно, подходит только в том случае, если вы начинаете новый проект.
С точки зрения пользовательских космических решений, если вы можете настроить обе программы для запуска в качестве указанного пользователя, вы, вероятно, можете настроить для них интернет-туннель SSL, но это сильно зависит от того, как вы хотите установить соединения.
При использовании программных решений вам потребуется OpenSSL или GNU TLS . Из этих двух последние написаны гораздо более чисто (OpenSSL имеет много подводных камней).
Для действительно элегантного решения можно использовать OpenSSL через boost:: asio , но это решение, вероятно, подходит только в том случае, если вы начинаете новый проект.
С точки зрения пользовательского пространства, если бы вы могли настроить обе программы для работы от имени определенного пользователя, вы, вероятно, могли бы настроить для них SSL-туннель, но это в значительной степени зависит от того, как вы хотите установить соединения.
-121--3866344-Что я сделал, чтобы добавить файлы внутри symlink в Git (я не использовал symlink, но):
sudo mount --bind SOURCEDIRECTORY TARGETDIRECTORY
Выполните эту команду в каталоге Git-managed. TARGETDIRECTORY
должен быть создан до установки в него SOURCEDIRECTORY
.
Это отлично работает в Linux, но не в OS X! Этот трюк помог мне и с Subversion. Я использую его, чтобы включить файлы из учетной записи Dropbox, где веб-дизайнер делает свои вещи.
-121--626758-Можно использовать ssh в режиме прокси туннеля. Вы подключаетесь с одного компьютера к другому и настраиваете порт прокси, а затем клиент подключается к локальному порту на своем компьютере и ssh proxis подключение TCP к удаленному компьютеру.
Команда ssh имеет значение -L
.
Комментарий указывает на то, что это, по крайней мере, теоретически, риск того, что какая-то программа на клиентской машине заберется на порт.
Однако SSL требует большого количества механизмов. Если бы я должен был сделать это, и я действительно не хотел использовать -L, я бы нырнул в источник ssh и придумал схему, чтобы сделать то, что -L делает.
В основном, у вас есть два варианта, и ни один из них не является SSH. Во-первых, используйте SSL/TLS, который для обеспечения безопасности от локальных пользователей потребует встраивания его в вашу программу. Во-вторых, используйте IPSEC или OpenVPN и некоторые правила для локальных пользователей в брандмауэре на каждом конце, чтобы ограничить использование туннеля только пользователем, выполняющим задачи в квестах.