Исходный текст:
场景需求:家里的几台树莓派通过家用WIFI路由器上网,虽然装了Teamviewer可以远程穿透内网控制图形界面,但远程时屏幕分辨率太小,体验不佳,于是想让树莓派上的SSH也能拥有穿透内网的功能。
查阅了很多资料,发现大多数内网穿透功能的实现都与一款Go语言编写的Ngrok项目相关,Ngroк — это целый набор серверных и клиентских решений. Поскольку он написан на языке Go, он обладает очень сильными кроссплатформенными возможностями (но в настоящее время почти все материалы указывают на то, что серверная часть этого проекта развёртывается на Linux). Автор использует Windows VPS от Alibaba Cloud и в последнее время также занимается разработкой на Go, поэтому эта статья будет посвящена тому, как развернуть проект Ngroк на Windows и установить клиент на домашних Raspberry Pi для реализации функции SSH-туннелирования через внутреннюю сеть.
О Ngroк следует отметить следующее:
Исходный код Ngroк открыт, и он доступен на GitHub, но автор считает его сложным в использовании и включает в себя множество технологий, которые автор считает ненужными, поэтому позже я повторно опубликовал свой перестроенный проект Ngroк на GitHub и синхронизировал его с Code Cloud для удобства использования другими пользователями с помощью простых команд go build
или go install
для кросс-платформенной компиляции и установки.
Чтобы отдать дань уважения первоначальному автору, мы кратко рассмотрим эти передовые технологии программирования на Golang, и те, кто не интересуется языком Go, могут пропустить следующий раздел:
// +build !release
, в начало кода, чтобы указать режим компиляции, например, в режиме компиляции без release этот файл будет скомпилирован, а затем использовать go build -tags 'release'
или go build -tags 'debug'
для управления компиляцией файла. Эта функция действительно гибкая и позволяет писать код для разных режимов компиляции в проекте, но недостатком является отсутствие подробных документов, что затрудняет понимание третьими сторонами различных режимов компиляции, что увеличивает сложность компиляции исходного кода на месте, поэтому это также одна из причин использования файла makefile в исходном проекте Ngroк.В целом, хотя эти функции имеют много преимуществ, их использование усложняет работу и жертвует превосходными кроссплатформенными характеристиками Go, чего автор не может принять, поэтому автор перестроил проект Ngroк, чтобы больше людей могли легко компилировать проект на множестве платформ.
Далее мы переходим к основному содержанию и начинаем развёртывание Ngroк с нуля, говоря о подготовке:
Для обеспечения безопасности процесса туннелирования Ngroк требует использования SSL-сертификата, и, к счастью, нет необходимости покупать сертификат, выданный центром сертификации CA, обычные пользователи могут самостоятельно создать сертификат с помощью инструмента OpenSSL. Процесс заключается в следующем:
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=MY_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=MY_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem ngrokroot.crt
cp device.crt snakeoil.crt
cp device.key snakeoil.key
После выполнения всех этих команд в текущем пути будут созданы 6 файлов, из которых сервер будет использовать файлы snakeoil.crt и snakeoil.key, а клиент будет использовать файл ngrokroot.crt.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )