内网穿透教程
Author : zbzhen, Modified : Tue Feb 21 10:41:24 2023
1. 内网穿透教程
1.1. 阿里云服务器需要做的工作
-
修改配置文件
frps.ini记得设置一个长一点的密码[common] bind_port = 7000 token = wo_shi_aliyun_mima -
开启TCP协议, 端口是7000
-
运行
nohup ./frps -c frps.ini >logfile.dat 2>&1 & -
停止
ps -aux|grep frp| grep -v grep查看进程号, 进程号是第一个数字kill -9 进程号可停止, 例如kill -9 3498
1.2. 实验室服务器需要做的工作
-
修改配置文件
frpc.ini假设阿里云的公网ip是
47.13.4.5[common] server_addr = 47.13.4.5 server_port = 7000 token = wo_shi_aliyun_mima [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 -
运行
nohup ./frpc -c frpc.ini >logfile.dat 2>&1 &
1.3. 个人电脑需要做的工作
假设实验室机器的用户名为shiyanshi则
ssh -p 6000 shiyanshi@47.13.4.5
1.4. 安全策略
上面的步奏是可以轻松实现内网穿透, 但是会把实验室的机器暴露在公网里, 为此, 建议用安全策略
-
阿里云要做的工作是一样的
-
实验室服务器的
frpc.ini的配置文件内容为
假设阿里云的公网ip是47.13.4.5[common] server_addr = 47.13.4.5 server_port = 7000 token = wo_shi_aliyun_mima [anquansecret_ssh] type = stcp sk = zheshigaojimima local_ip = 127.0.0.1 local_port = 22 -
个人电脑上也要运行frp, 配置文件
frpc.ini内容为[common] server_addr = 47.13.4.5 server_port = 7000 [secret_ssh_visitor] type = stcp role = visitor server_name = anquansecret_ssh sk = zheshigaojimima bind_addr = 127.0.0.1 bind_port = 6000假设实验室机器的用户名为
shiyanshi则
运行./frpc -c frpc.ini
连接ssh -p 6000 shiyanshi@127.0.0.1
1.5. 多控模式
如果实验室有多台服务器, 该怎么处理?
假设实验室有两台服务器A与B
-
服务器A的配置文件
frpc.ini为[common] server_addr = 47.13.4.5 server_port = 7000 token = wo_shi_aliyun_mima [anquansecret_sshA] type = stcp sk = zheshigaojimimaA local_ip = 127.0.0.1 local_port = 22 -
服务器B的配置文件
frpc.ini为[common] server_addr = 47.13.4.5 server_port = 7000 token = wo_shi_aliyun_mima [anquansecret_sshB] type = stcp sk = zheshigaojimimaB local_ip = 127.0.0.1 local_port = 22 -
个人电脑上的配置文件
frpc.ini为[common] server_addr = 47.13.4.5 server_port = 7000 token= wo_shi_aliyun_mima [secret_ssh_visitor] type = stcp role = visitor server_name = anquansecret_sshA sk = zheshigaojimimaA bind_addr = 127.0.0.1 bind_port = 6000 [secret_ssh_10_10_15_8] type = stcp role = visitor server_name = anquansecret_sshB sk = zheshigaojimimaB bind_addr = 127.0.0.1 bind_port = 6001端口得设两个,
假设服务器A上的用户名为jqA, 服务器B上的用户名为jqB, 则连接方式分别为ssh -p 6000 jqA@127.0.0.1ssh -p 6001 jqB@127.0.0.1
1.6. 开机启动
1.6.1. 简单方法
这个已经测试成功
在/etc/rc.local的代码exit 0前面加上开启frp的命令即可, 例如在阿里云上添加
nohup /xxx/frps -c /xxx/frps.ini >/xxx/logfile.dat 2>&1 &
这里xxx为/frp的绝对路径
1.6.2. 非root的方法
这个并没有测试成功
这个并没有测试成功
利用crontab命令实现
crontab -e@reboot nohup /xxx/frps -c /xxx/frps.ini >/xxx/logfile.dat 2>&1 &
常用命令
-
crontab -l查看所有任务 -
ps ufx | grep cron查看正在进行的任务
停止crontab正在执行的任务
-
方法一: 先查看进程号, 再删除.
-
方法二:
crontab -e- 用
#注释掉想要停止的认为 - 重启crontab, 命令为
sudo service cron reload
1.7. 免密登陆
-
本地客户端生成密钥
ssh-keygen, 一路回车即可 -
可以通过
cd ~/.ssh; ls查看刚创建的密钥 -
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.33.44 -
连接
ssh root@10.10.33.44
这种功能方法比输入密码肯定要安全不少
, 并且也方便很多. 但是也要注意安全, 万一自己电脑私钥泄露, 就会影响到服务器的安全.