从零开始 手把手教学 CentOS7.6 部署Ngrok 并成功使用

本文详细描述了如何在CentOS7环境中从零开始部署Ngrok,包括设置域名、安装Go和Git环境、制作SSL证书、安装Ngrok并配置,以及使用Screen和Powershell实现后台服务运行。
摘要由CSDN通过智能技术生成

一、说明和准备

        为更好地帮助小白从零开始部署,因此将笔者配置或实际选择以黄色背景显示

        1.一个可用的域名(笔者在阿里云购买),并解析到服务器公网ip(笔者解析nwct.域名

        2.一台有公网IP的服务器(国内站点 ,优先选择带宽,根据实时价格选择,笔者选择腾讯云99/年 4M带宽 (北京)

        3.FileZilla软件(用于传输文件,也可使用ssh,scp等命令在CMD中操作,但不能设置密钥(使用密码) 笔者没有试验)

        4.本文的操作过程主要参考《手把手教你在 CentOS7 上部署Ngrok (踩坑&填坑)》,部分操作可以从原文获取,输入和输出结果一致。文中以《参考引文》替代,有一些细致的差异导致最终连接不上,因此记录下来。

二、实施

        我习惯使用腾讯云/阿里云的网页连接,因此进入后需首先查看是否为root用户(重要!!!),一般需要输入自己设置的密码才能进入到root账户,因此推荐使用第二个密码登录

        如果使用一键登录也没有关系,进入后最左侧不是root,而是其他用户(如:lighthouse等自定义用户),执行su -命令输入密码

显示示例:
[lighthouse@VM-20-15-centos ~]#su -

        快捷复制

su -

        然后弹出Password:光标,输入你的密码回车即可,即可进入到root用户!下面的所有操作均基于此用户!

2.1 安装go环境和git环境

        首先是更新软件

yum update

        然后安装golang

        (如果出错No package go available.请查看 《参考引文》对应部分解决,笔者没有出错

yum install go

        然后查看go的版本

go version

        返回以下类似结果即成功(版本可能随时间不一样,但不影响)

go version go1.21.5 linux/amd64

        安装git环境(中间会出来输入y or n的,输入y)

yum install git

        查看git版本,返回结果请参照go,有返回版本号即为成功(版本低一些无所谓,不一定非要是最新版)

git --version

2.2 安装ngrok

        拉去Ngrok的源码,github地址,和国内gitee源笔者使用国内源,国外的超时

git clone https://gitee.com/marchocode/ngrok

        然后进入ngrok目录(linux中目录很重要,在不同目录的指令可能不同,请随时保证目录与本文一致!!!)

cd ngrok/
mkdir ssl
cd ssl

        cd 后会显示对应文件夹

显示示例:
[root@VM-20-15-centos ~]#cd ngrok/
[root@VM-20-15-centos ngrok]#mkdir ssl
[root@VM-20-15-centos ngrok]#cd ssl
[root@VM-20-15-centos ssl]#

        在服务器上制作SAN证书,原因请参照《参考引文》部分

        (下文中所有xx.xx.xxx都需要替换为自己的域名解析)

echo subjectAltName = DNS:"xx.xx.xxx">extfile.cnf

        如笔者如下执行

显示示例:
[root@VM-20-15-centos ssl]#echo subjectAltName = DNS:"nwct.nideyuming.top">extfile.cnf

        生成证书

export NGROK_DOMAIN="xx.xx.xxx"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 5000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 5000 -out server.crt -extfile extfile.cnf

        替换证书(询问时请输入y)

        第一个:

cp base.pem ../assets/client/tls/ngrokroot.crt

        第二个:

cp server.crt ../assets/server/tls/snakeoil.crt

        第三个:

cp server.key ../assets/server/tls/snakeoil.key

        然后回到上级目录(应为ngrok文件夹),生成服务端,出错make: *** [deps] Error 1请看《参考引文

cd ../
GOOS=linux GOARCH=amd64 make release-server

        成功后在结果中显示/ngrok/bin/ngrokd文件夹即成功

        然后生成客户端(Windows 64位系统)文件,其他类型客户端命令请参考其他来源,如12

GOOS=windows GOARCH=amd64 make release-client

        然后在ngrok/bin/windows_amd64目录下会生成一个ngrok.exe文件,成功

2.3 使用FileZilla连接服务器并下载文件

        使用密码或者密钥连接,请搜索相关教程,笔者使用密钥连接(腾讯云控制台生成密钥后自动关闭密码连接)

        打开文件-站点管理器-创建新站点-填写信息-点击连接

        选择SFTP协议,主机填写服务器公网IP,用户root,类型选择密码/密钥,如果是密钥的话请将自动下载的私钥文件添加到引用上。

        连接成功后将左边打开到想要保存的本地文件夹中,右边则打开/root/ngrok/bin/windows_amd64文件夹,可以看到生成的文件ngrok.exe

        将ngrok文件拖拽或者复制到左侧本地文件夹中,即可完成客户端的下载

        然后需要新建配置文件为ngrok.cfg,并填写以下内容,保存,其中 remote_port值可以自己修改为任意不常用的端口值(常用的端口不要用)

server_addr: xx.xx.xxx:4443
trust_host_root_certs: false

tunnels:
    mstsc:
        remote_port: 3378
        proto:
         tcp: "127.0.0.1:3389"

        在服务器控制台放行端口,放行4443(用来与内网电脑客户端建立隧道)以及自己设置的远程3378的TCP和UDP端口(外网电脑远程连接服务器该端口)

2.4 开启服务

        在root的ngrod文件夹下输入如下指令启动服务端

./bin/ngrokd -domain="xx.xx.xxx" -httpAddr=:80 -httpsAddr=:443 -tunnelAddr=:4443

        出现如下指令代表服务端开启成功,注意开启后会一直在这个进程中并不断刷新

[06:51:54 UTC 2024/03/01] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[06:51:54 UTC 2024/03/01] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds
[06:51:54 UTC 2024/03/01] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:80
[06:51:54 UTC 2024/03/01] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443
[06:51:54 UTC 2024/03/01] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443
[06:52:24 UTC 2024/03/01] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting: {"bytesIn.count":0,"bytesOut.count":0,"connMeter.count":0,"connMeter.m1":0,"httpTunnelMeter.count":0,"linux":0,"osx":0,"other":0,"tcpTunnelMeter.count":0,"tunnelMeter.count":0,"tunnelMeter.m1":0,"windows":0}

        然后启动客户端,打开cmd,cd到本地电脑(被控端)的ngrok.exe所在文件夹中,输入

ngrok.exe -log=stdout -config=ngrok.cfg start mstsc

        其中 -log=stdout 是输出日志到结果中,加了的话会出现日志

        不加的话就会显示

        上图中没有出现[Error]或下图中没有出现红色即为成功,已经可以使用外网电脑远程桌面连接进行连接了!

三、外网电脑远程桌面连接

        使用外网电脑打开Windows的远程桌面连接应用,其他电脑系统也有自带的相关软件,以Windows远程桌面连接为例进行演示输入域名:端口号,本例中为3378,以及被控端电脑的用户名

        点击连接后输入账户密码即可

        成功连接!

四、使用Screeen后台持续运行

        在服务器上跑服务端软件的时候,当主机与服务器断开连接的时候,centos会中断程序进行,这就意味着要让程序持续运行,就必须得保持主机和服务器的连接,为了解决这个问题, screen 是个极其有用的方法

        错误表现截图,如果你的错误一致,可以根据下面的教程解决

        外网计算机远程连接时,长时间显示配置远程会话。

        本地客户端从绿色的online变成了蓝色的connecting并一直持续

        仍然在root用户的根目录

        安装screen

yum install screen

        使用screen运行ngrok,-S test 可以取任意名字,笔者取得是ngrok

screen -S ngrok

        在screen ngrok这个会话中,执行命令(出问题可以看五)

cd ngrok/
./bin/ngrokd -domain="xx.xx.xxx" -httpAddr=:80 -httpsAddr=:443 -tunnelAddr=:4443

        然后按ctrl+a+d来从ngrok会话回到命令行

五、使用Powershell后台执行客户端程序

        在windows中为了执行ngrok.exe,向上面说的一样使用cmd可以执行,但由于在于我的电脑开机过程中ngrok程序一直需要开着,而cmd窗口就得一直存在,因为cmd并没有提供挂起的功能,因此我们可以使用Powershell来实现后台挂起的操作,这样界面就会清爽一些。

        首先需要在客户端执行程序和配置文件所在的文件夹里创建一个文本文件,将以下代码复制进去,保存并修改后缀名为.bat。我这里的名字是ngrok.bat

ngrok.exe -config=ngrok.cfg start mstsc

        然后在该文件夹中打开powershell,右键 open terminal或者win+R输入powershell然后cd到该文件夹,之后输入以下指令(注意引号内的内容是自己定义的文件名!):

Start-Process -WindowStyle hidden -FilePath "ngrok.bat"

        示例如图:

        然后就可以将powershell关掉,通过检查任务管理器可以看到ngrok已经开始运行了,然后就可以使用远程桌面连接测试了!这样的话 只要被控电脑不重启,都可以很安静的让客户端软件后台运行了。

六、一些注意事项和命令

6.1 kill掉错误进程

        如果ngrokd程序自己断掉了,但其进程仍然在,因此需要先杀掉进程

        查找进程号

ps -ef | grep ngrok

        查找到的进程号杀掉即可

kill 2823

6.2 转移目录

        cd 命令,如果出错提示没有文件夹,如果确实已经make dir了,则代表所在的文件夹不对,使用cd ../返回上一级目录,使用ls查看文件夹所有文件

cd dir
make dir
cd ../

6.3 退出程序

        当程序在持续运行时,没有让我们输入的地方,如果有想进行其他操作,可以使用ctrl+C来退出当前程序回到命令行模式。

6.4 Screen操作

        列出所有的screen:

screen -ls

        重新连接screen,需要要连接的是detached

screen -r ngrok

        删除上述列表中没有用的的screen,name为列表中的名字,格式为numid.balabala

screen -S name -X quit
  • 27
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是在CentOS 7.6上部署LDAP的步骤: 1. 安装OpenLDAP和相关工具: ``` yum install openldap openldap-servers openldap-clients migrationtools -y ``` 2. 配置slapd.conf文件: 编辑/etc/openldap/slapd.conf文件并添加以下内容: ``` include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args database bdb suffix "dc=example,dc=com" rootdn "cn=Manager,dc=example,dc=com" rootpw {SHA}hashed_password directory /var/lib/ldap access to * by * read ``` 将 "dc=example,dc=com" 修改为您的组织名称,并设置 "rootpw" 为管理员密码的SHA哈希值。您可以使用以下命令生成SHA哈希值: ``` slappasswd -s 密码 ``` 3. 配置ldap.conf文件: 编辑/etc/openldap/ldap.conf文件并添加以下内容: ``` BASE dc=example,dc=com URI ldap://localhost ``` 将 "dc=example,dc=com" 修改为您的组织名称。 4. 导入示例数据: 在/usr/share/openldap/migration目录下有一个示例数据文件,您可以使用以下命令将示例数据导入LDAP数据库: ``` cp /usr/share/openldap/migration/migrate_common.ph /usr/share/openldap/migration/migrate_common.ph.bak sed -i 's/^\$DEFAULT_MAIL_DOMAIN.*$/\$DEFAULT_MAIL_DOMAIN = "example.com";/g' /usr/share/openldap/migration/migrate_common.ph /usr/share/openldap/migration/migrate_base.pl > /tmp/base.ldif /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif /usr/share/openldap/migration/migrate_group.pl /etc/group > /tmp/group.ldif ldapadd -x -D "cn=Manager,dc=example,dc=com" -f /tmp/base.ldif -w 管理员密码 ldapadd -x -D "cn=Manager,dc=example,dc=com" -f /tmp/passwd.ldif -w 管理员密码 ldapadd -x -D "cn=Manager,dc=example,dc=com" -f /tmp/group.ldif -w 管理员密码 ``` 将 "example.com" 修改为您的邮件域名,并将 "dc=example,dc=com" 修改为您的组织名称。确保替换 "管理员密码" 为您的管理员密码。 5. 启动slapd服务: ``` systemctl start slapd systemctl enable slapd ``` 现在,您已经在CentOS 7.6上成功部署了LDAP服务。您可以使用ldapsearch命令测试LDAP是否正常工作。例如,使用以下命令查询所有用户信息: ``` ldapsearch -x -b "dc=example,dc=com" "(objectClass=*)" -D "cn=Manager,dc=example,dc=com" -w 管理员密码 ``` 将 "dc=example,dc=com" 修改为您的组织名称,并将 "管理员密码" 修改为您的管理员密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值