使用树莓派搭建sftp服务器,并实现外网访问功能。主流的一些外网访问方式可能需要vps或者公网ip和域名,实现起来比较麻烦,所以我最终选择 Sakura frp提供的免费内网穿透服务(需要1元实名认证)。
以下是我使用的配置
我安装的是ubuntu20.04,一开始使用win32 Disk Imager+SD Card Formatter的方式安装,但是树莓派网络总是断开,使用树莓派官方烧录器后,可以正常使用,推荐使用官方烧录软件
此处参考树莓派安装ubuntu20.04、图形桌面、ROS笔记
双击imager_1.7.3.exe打开安装程序,直接安装就可以
安装完成
将SD卡插入读卡器,然后插到电脑上,打开Raspberry Pi Imager
这里我的SD卡已经烧录过了,在安装操作系统前需要格式化,不过为了确保SD卡格式正确,建议烧录前都执行一下格式化
完成格式化后先关闭Raspberry Pi Imager,再重新打开一次,以免SD卡格式化后数据未更新
我这里选择的是Ubuntu20.04.5
点击设置按钮,设置主机名,开启SSH
设置用户名和密码,这里的用户名和密码需要记住,登录的时候需要使用
配置WiFi
其他选项可以按照自己的需要设置,完成后保存,烧录
等待一段时间,烧录完成,关闭Raspberry Pi Imager,并弹出SD卡
将SD卡插入树莓派,上电自动开机,使用xshell连接树莓派
xshell可以在官网下载免费版本
如果选择Both,就会收到两封邮件,分别是xshell和xftp的下载链接,将下载链接复制到浏览器打开,开始下载安装程序,下载完成后安装即可,安装过程不再赘述
安装完成后,打开xshell,新建
如果不知道树莓派的ip可以参考树莓派安装ubuntu20.04、图形桌面、ROS笔记3、登陆树莓派。(但是我通过ping树莓派主机名的方式查询不到)
可以登录到路由器管理界面,固定树莓派的mac地址和ip地址
连接成功后,输入用户名和密码(之前设置的那个)登录到树莓派
cd /etc/apt
sudo cp sources.list ./sources.list.bak
sudo sed -i 's/ports.ubuntu.com/mirrors.ustc.edu.cn/g' sources.list
sudo apt update
sudo apt upgrade
使用xshell连接并登录到树莓派,执行以下命令
转移到/usr/local/bin目录下
cd /usr/local/bin
下载安装Sakura frp
sudo wget -O frpc https://getfrp.sh/d/frpc_linux_arm64
更新权限
sudo chmod 755 frpc
打开Sakura frp官网,先注册账号
打开管理面板-服务-隧道列表,创建隧道
这里选择推荐SSH使用的节点都可以,我选择枣庄多线2
隧道类型选择TCP,本地端口选择22,生成访问密码
创建成功的隧道,这里的隧道ID需要记住
在树莓派终端,新建并打开/etc/systemd/system/[email protected]文件
sudo vi /etc/systemd/system/frpc@.service
在文件中输入以下内容
[Unit]
Description=SakuraFrp Service
After=network.target
[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=60s
ExecStart=/usr/local/bin/frpc -f %i
[Install]
WantedBy=multi-user.target
重载 systemd
sudo systemctl daemon-reload
开启隧道的命令格式是(这里的访问密钥不是刚刚的访问密码)
sudo systemctl start frpc@访问密钥:隧道ID
访问密钥可以在sakurafrp的管理面板-用户-用户信息-账号信息-访问密钥中查询
例如:开启访问密钥为 wdnmdtoken666666 的用户所拥有的 ID 为 12345 的隧道:
systemctl start frpc@wdnmdtoken666666:12345
本文之后将仍然使用frpc@wdnmdtoken666666:12345作为例子
配置开机自启
sudo systemctl enable frpc@wdnmdtoken666666:12345
查看隧道日志
journalctl -u frpc@wdnmdtoken666666:12345
例如:①cn-bj-ali-1.sakurafrp.com:59246,②43.249.193.55:59246
在浏览器输入并访问https://43.249.193.55:59246
我使用火狐浏览器访问https://①的形式,但是无法正常访问,使用https://②的形式会提示风险访问,只要忽视风险就可以访问
打开访问认证页面,输入访问密码(创建隧道时生成的),勾选记住我,提交,接下来就可以连接sftp服务了
建立新站点,选择sftp协议,填写主机和端口,输入用户名和密码,连接
例如:①cn-bj-ali-1.sakurafrp.com:59246
主机为cn-bj-ali-1.sakurafrp.com,端口为59246