【Ubuntu】开启ssh服务/配置ftp内网穿透/自动连接校园网

前言

想让工作电脑开启ssh服务,这样就可以在校外进行远程访问办公,电脑的系统为Ubuntu20.04

开启ssh服务

首先查看当前Ubuntu安装的SSH服务:

dpkg -l | grep ssh

Ubuntu默认只安装了ssh的客户端(openssh-client),因此想要对外提供ssh服务,必须再安装ssh服务端,可以这样进行安装:

sudo apt install openssh-server

如果产生如下报错,说明版本不适配:

下列软件包有未满足的依赖关系:
openssh-server : 依赖: openssh-client (= 1:7.6p1-4ubuntu0.7)
依赖: openssh-sftp-server 但是它将不会被安装
推荐: ssh-import-id 但是它将不会被安装

重新安装

sudo apt-get install openssh-client=1:7.6p1-4ubuntu0.7
sudo apt install openssh-server

安装好之后,再次输入查看 dpkg -l | grep ssh:
在这里插入图片描述

开启ssh服务:

sudo /etc/init.d/ssh start

查询是否开启:

ps -e |grep ssh

出现sshd说明已经开启:
在这里插入图片描述

输入ifconfig查看本机ip,在服务器上去连接本机:

在这里插入图片描述
连接成功

内网穿透

RFC1918规定了三块专有的地址属于内网网段:

  • (1)10.0.0.0 到 10.255.255.255
  • (2)172.16.0.0 到172.31.255.255
  • (3)192.168.0.0 到192.168.255.255

使用ifconfig查询本机ip地址,发现属于内网,要让外网访问,需借助内网穿透。

方式一:借助云服务器进行内网穿透

内网穿透需要借助一台ip为公网的服务器,这里我正好一台闲置的阿里云服务器,因此利用它来进行frp配置。

这部分内容主要参考:https://blog.csdn.net/weixin_43922901/article/details/109261700?

服务端配置

首先将阿里云服务器系统重置为Ubuntu 20.04,并在防火墙中开启7000和7500端口(也可以换成其它的,后续要用到)

先配置服务端,下载frp_0.33.0:

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

解压frp压缩包:

tar -zxvf frp_0.33.0_linux_amd64.tar.gz

进入该解压目录:

cd frp_0.33.0_linux_amd64/

打开配置文件(注意服务端的配置文件是frps,客户端配置文件是frpc:

vim frps.ini

将文件内容修改为如下:

[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 52010  # 这个token之后在客户端会用到

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

设置和启动frp服务:

sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps

防火墙开放两个端口:

ufw allow 7000
ufw allow 7500
ufw reload

这里再顺带补充一些防火墙的操作
注:防火墙操作均需要管理员权限

查看防火墙状态(可以看到是否开启/开启的端口号信息):

ufw status

开启防火墙:

ufw enable

添加某个端口号:

ufw allow 端口号

防火墙重启:

ufw reload

配置完之后,防火墙状态如下图所示:
在这里插入图片描述

验证服务端是否启动成功,访问服务器公网ip:7500

输入之前设置的用户名和密码,进入后台,说明启动成功。

在这里插入图片描述

到这里服务端配置完成,下面进入到客户端的配置。

客户端配置

下载frp,放在家目录下
可以和服务端的下载方式一样,这里提供百度网盘备份:
下载连接:https://pan.baidu.com/s/1JOxa6dQ1dr5VcCueu_zCZA?pwd=q7jn

解压frp压缩包:

tar -zxvf frp_0.33.0_linux_amd64.tar.gz

进入该解压目录:

cd frp_0.33.0_linux_amd64/

编辑配置文件:

vim frpc.ini

修改内容如下:

# 客户端配置
[common]
server_addr = 服务器ip
 # 与frps.ini的bind_port一致
server_port = 7000
 # 与frps.ini的token一致
token = 52010
tls_enable = true

# 配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
 # 这个自定义,之后再ssh连接的时候要用
remote_port = 6000 

这里的端口号可以根据本机情况进行调整,比如6000端口有其它进程在使用,那就可以修改成其它空闲端口号,顺便补充查看端口相关命令:

查看已使用端口情况:

netstat -nultp

查询某个端口号是否被占用

# 第一种方式
netstat -anlp | grep :端口号
# 第二种方式
lsof -i:端口号

防火墙开放端口,这里操作和服务端类似

ufw allow 6000
ufw reload

客户端启动:

在frp_0.33.0_darwin_amd64目录下执行:

./frpc -c frpc.ini

出现下面提示,说明启动成功。

在这里插入图片描述

换外部另一台电脑尝试,注意这里访问的端口号为客户端配置的端口(6000),成功连接,说明配置成功。

在这里插入图片描述

配置后台运行

为了让脚本能够一直挂在后台,因此编写一个sh脚本文件frp_start.sh

#!/bin/bash
cd /home/zxy/frp_0.33.0/
./frpc -c frpc.ini

赋予脚本执行权限:

sudo chmod +x frp_start.sh

尝试运行脚本:

./frp_start.sh

能够正常运行
在这里插入图片描述
为了让脚本一直挂在后台运行,使用nohup &的方式执行脚本:
注:nohup指不挂断地运行,&指让程序后台运行

nohup ./frp_start.sh &

打开资源监视器:

gnome-system-monitor

搜索frpc,可以看到该脚本和frpc服务正在运行,远程测试可正常连接,说明配置完成。

在这里插入图片描述

设置开机自启动

为了防止电脑意外重启导致服务挂掉,有必要给脚本添加到开机自启动项中。

Ubuntu设置开启自启动很简单,终端输入:

gnome-session-properties

将脚本文件添加进去即可。

方式二:借助cpolar进行内网穿透

云服务器虽然稳定方便,但是价格昂贵(续费更贵),每次换新机需要重新配置。因此有一些运行商(cpolar、花生壳…)提供了免费的公网服务器,这里以cpolar为例。

cpolar地址:https://dashboard.cpolar.com/get-started

配置起来非常方便,根据下图中的步骤下载安装即可。
在这里插入图片描述

下载好之后,进入cpolar文件夹:

在这里插入图片描述

终端输入:

./cpolar tcp 22

注:这里的端口号和本机上ssh配置的端口号需保持一致,如果是要访问本机

之后出现如下界面,就可以根据图中的ip和端口号进行ssh连接。

在这里插入图片描述

cpolar的免费版本的公网ip和端口号会经常变化,因此连接前需要去网站后台查看状态

在这里插入图片描述

和上面一样,继续配置cpolar后台运行,编写一个sh脚本文件cpolar_start.sh

#!/bin/bash
cd /home/zxy/cpolar/
./cpolar tcp 22

赋予脚本执行权限:

sudo chmod +x cpolar_start.sh

nohup挂载运行:

nohup ./cpolar_start.sh &

同样运行gnome-session-properties,将脚本添加开机自启,配置完成。

还有其它方式,比如花生壳的方案,可以固定ip和端口号,不过免费版本仅有1个G的流量限制,可以应急使用。

花生壳官网配置教程:https://service.oray.com/question/11630.html

自动连接校园网

由于工作电脑连接的是校园网,每隔一段时间就需要重新登录验证校园网信息,因此有必要设定个定时脚本,让电脑自动连接校园网。

以XDU校园网为例,首先手动重连网络,弹出验证网站,在网站中进行登录验证,用F12抓包获取信息,这里不作赘述。

获得信息之后,编写python脚本如下(学号密码换成自己的):

import requests

# 1. 登录请求地址,下面是西电的登录地址
url = 'https://w.xidian.edu.cn/srun_portal_pc.php'

# 2. 登录请求发送的数据,下面是登录西电校园网所必须的字段
data = {
    
    
    'action': 'login',
    'ac_id': '8',
    "username": '学号',
    "password": '密码'
}

# 3. 复制浏览器的请求头,下面是西电的校园网登录请求头
header = {
    
    
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
    "Cache-Control": "max-age=0",
    "Connectin": "keep-alive",
    "Host": "w.xidian.edu.cn",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36",
}

# 4. 以post方式发送登录请求;返回状态码为200则表示请求成功
response = requests.post(url, data, headers=header)
print("状态码:", response.status_code)

手动断网重连,然后运行脚本,返回200,并且可以上网,说明脚本执行成功。

下面添加定时任务,编写执行脚本autoconn.sh

#!/bin/bash
cd /home/zxy/script/
python autoconn.py

赋予脚本执行权限:

sudo chmod +x autoconn.sh

这里使用crontab来执行定时命令,首先了解一些cron命令:

crontab参数:

  • -u:编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab crontab -u 使用者名称
  • -l:可以列出crontab的内容
  • -r:可以移除crontab
  • -e:可以使用系统预设的编辑器,开启crontab
  • -i:可以移除crontab,会跳出系统信息让你再次确定是否移除crontab

常用命令:

  • 重启cron:/etc/init.d/cron restart
  • 查看cron:crontab -l
  • 查看cron的状态(开启或关闭):service cron status
  • 打开cron文件:crontab -e
  • 查看cron日志:/var/log/syslog

crontab时间格式说明:

  • minute(分):可以设置0-59分

  • hour(小时):可以设置0-23小时

  • day of month(日期):可以设置1-31号

  • month(月份):可以设置1-12月

  • day of week(星期):可以设置0-7星期几,其中0和7都代表星期天,也可以使用名称来表示星期天到星期一,例如sun表示星期天,mon表示星期一

  • 数值意义:

    • "*"代表取值范围内的数字
    • "/“代表"每”
    • "-"代表从某个数字到某个数字
    • ","分开几个离散的数字

下面来创建crontab:

crontab -e

输入:

30 8 * * * sh /home/zxy/script/autoconn.sh

意义为每天早上8点30分执行一次脚本

检查定时命令是否保存成功:

crontab -l

重启cron(ubuntu的cron编写完毕后,需要重启才会生效)

/etc/init.d/cron restart

至此,配置完成,可以开始远程办公。

猜你喜欢

转载自blog.csdn.net/qq1198768105/article/details/127152242
今日推荐