开源SFTP服务器软件SFTPGo详解
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">什么是 SFTPGo?</a></li><li><a href="#_label1">安装</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">卷</a></li><li><a href="#_lab2_1_1">端口</a></li><li><a href="#_lab2_1_2">环境</a></li></ul><li><a href="#_label2">命令行安装</a></li><ul class="second_class_ul"></ul><li><a href="#_label3">运行</a></li><ul class="second_class_ul"><li><a href="#_lab2_3_3">后端(WebAdmin)</a></li><li><a href="#_lab2_3_4">前端(WebClient)</a></li><li><a href="#_lab2_3_5">SFTP 访问</a></li><li><a href="#_lab2_3_6">WebDAV 访问</a></li></ul><li><a href="#_label4">参考文档</a></li><ul class="second_class_ul"></ul></ul></div><p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584628.jpg" /></p><p class="maodian"><a name="_label0"></a></p><h2>什么是 SFTPGo?</h2>
<blockquote><p><code>SFTPGo</code> 是一种事件驱动的文件传输解决方案。它支持多种协议(<code>SFTP、SCP、FTP/S、WebDAV、HTTP/S</code>)和多种存储后端,包括本地文件系统、加密本地文件系统、<code>S3</code>(兼容)对象存储、<code>Google Cloud Storage</code>、<code>Azure Blob Storage</code>、其他 <code>SFTP</code> 服务器。</p></blockquote>
<p>使用 <code>SFTPGo</code>,您可以利用本地和云存储后端,使用您已经熟悉的相同工具和流程在内部或与业务伙伴交换和存储文件。</p>
<p>通过👇这张系统架构图,可能更容易理解 <code>SFTPGo</code> 的功能</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584729.png" /></p>
<p class="maodian"><a name="_label1"></a></p><h2>安装</h2>
<p>在群晖上以 Docker 方式安装。</p>
<p>在注册表中搜索 <code>sftpgo</code> ,选择第一个 <code>drakkan/sftpgo</code>,版本选择 <code>latest</code>。</p>
<blockquote><p>本文写作时, <code>latest</code> 版本对应为 <code>v2.6.2</code>;</p></blockquote>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584730.png" /></p>
<p>最近不知道 <code>Docker hub</code> 又发了什么癫,是调整了算法还是什么原因,总之搜出来都是乱七八糟的,不管搜什么,都显示 <code>10000</code> 个项目</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584731.png" /></p>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>卷</h3>
<p>在 <code>docker</code> 文件夹中,创建一个新文件夹 <code>sftpgo</code>,并在其中建两个子文件夹 <code>data</code> 和 <code>key</code></p>
<table><thead><tr><th>文件夹</th><th>装载路径</th><th>说明</th></tr></thead><tbody><tr><td><code>docker/sftpgo/data</code></td><td><code>/srv/sftpgo</code></td><td>存放数据</td></tr><tr><td><code>docker/sftpgo/key</code></td><td><code>/var/lib/sftpgo</code></td><td>系统主目录</td></tr></tbody></table>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584732.png" /></p>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>端口</h3>
<p>本地端口不冲突就行,不确定的话可以用命令查一下</p>
<div class="jb51code"><pre class="brush:bash;"># 查看端口占用
netstat -tunlp | grep 端口号</pre></div>
<table><thead><tr><th>本地端口</th><th>容器端口</th><th>说明</th></tr></thead><tbody><tr><td><code>2021</code></td><td><code>8080</code></td><td><code>Web UI</code> 的端口</td></tr><tr><td><code>2022</code></td><td><code>2022</code></td><td><code>SFTP</code> 协议使用的端口</td></tr><tr><td><code>2023</code></td><td><code>2023</code></td><td><code>WebDAV</code> 协议使用的端口</td></tr></tbody></table>
<p>默认没有对外暴露端口</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584733.png" /></p>
<p>需要点 <code>+</code> 号逐个添加</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584734.png" /></p>
<p class="maodian"><a name="_lab2_1_2"></a></p><h3>环境</h3>
<table><thead><tr><th>可变</th><th>值</th></tr></thead><tbody><tr><td><code>SFTPGO_WEBDAVD__BINDINGS__0__PORT</code></td><td><code>WebDAV</code> 协议的容器端口,设为 <code>2023</code></td></tr></tbody></table>
<blockquote><p>系统默认支持只支持 <code>SFTP</code> 协议,通过环境变量设置,增加了 <code>WebDAV</code> 协议</p></blockquote>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584735.png" /></p>
<p class="maodian"><a name="_label2"></a></p><h2>命令行安装</h2>
<p>如果你熟悉命令行,可能用 <code>docker cli</code> 更快捷</p>
<div class="jb51code"><pre class="brush:bash;"># 新建文件夹 sftpgo 和 子目录
mkdir -p /volume1/docker/sftpgo/{data,key}
# 进入 sftpgo 目录
cd /volume1/docker/sftpgo
# 修改目录所有者
chown -R 1000:1000 {data,key}
# 运行容器
docker run -d \
--restart unless-stopped \
--name sftpgo \
-p 2021:8080 \
-p 2022:2022 \
-p 2023:2023 \
-v $(pwd)/data:/srv/sftpgo \
-v $(pwd)/key:/var/lib/sftpgo \
-e SFTPGO_WEBDAVD__BINDINGS__0__PORT=2023 \
drakkan/sftpgo</pre></div>
<p>也可以用 <code>docker-compose</code> 安装,将下面的内容保存为 <code>docker-compose.yml</code> 文件</p>
<div class="jb51code"><pre class="brush:bash;">version: '3'
services:
sftpgo:
image: drakkan/sftpgo
container_name: sftpgo
restart: unless-stopped
ports:
- 2021:8080
- 2022:2022
- 2023:2023
volumes:
- ./data:/srv/sftpgo
- ./key:/var/lib/sftpgo
environment:
- SFTPGO_WEBDAVD__BINDINGS__0__PORT=2023</pre></div>
<p>然后执行下面的命令</p>
<div class="jb51code"><pre class="brush:bash;"># 新建文件夹 sftpgo 和 子目录
mkdir -p /volume1/docker/sftpgo/{data,key}
# 进入 sftpgo 目录
cd /volume1/docker/sftpgo
# 修改目录所有者
chown -R 1000:1000 {data,key}
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d</pre></div>
<p class="maodian"><a name="_label3"></a></p><h2>运行</h2>
<p class="maodian"><a name="_lab2_3_3"></a></p><h3>后端(WebAdmin)</h3>
<p>在浏览器中输入 <code>http://群晖IP:2021</code> 就能看到注册界面</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584736.png" /></p>
<p>登录成功后的后台管理的主界面</p>
<blockquote><p>是否要启用双因素认证,看个人需要了,如果只是局域网,可以不启用</p></blockquote>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584737.png" /></p>
<p>新建 <code>virtual folders</code></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584738.png" /></p>
<p>点 <code>Add</code> 添加,在 <code>Storage</code> 中可以选择类型</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584739.png" /></p>
<p><code>Storage</code>:选择 <code>Local disk</code><code>Root directory</code>:填入我们挂载的数据目录 <code>/srv/sftpgo</code></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584740.png" /></p>
<p>保存之后,就有了第一个虚拟存储</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584741.png" /></p>
<p>再新建一个用户用于测试</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584742.png" /></p>
<p><code>Username</code>:用户名<code>Password</code>:密码</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584743.png" /></p>
<p>下拉到 <code>Virtual folders</code> 部分,授权用户可使用的目录</p>
<p><code>mount path</code>:用户看到的名称,需要自己输入,例如 <code>/nas</code><code>Select a path</code>:下拉选择,这是我们前面创建的 <code>Virtual folders</code></p>
<p>完成后点 <code>Add</code></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584744.png" /></p>
<p>点 <code>Save</code> 保存之后</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584745.png" /></p>
<p>点 <code>Sign Out</code> 退出管理端</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584746.png" /></p>
<p class="maodian"><a name="_lab2_3_4"></a></p><h3>前端(WebClient)</h3>
<p>回到登录界面后,<code>Go to WebClient</code></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584747.png" /></p>
<p>输入账号密码</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584848.png" /></p>
<p>登录成功后,会看到我们授权的目录</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584849.png" /></p>
<p>可以上传文件</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584850.png" /></p>
<p>服务器上保存的目录</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584851.png" /></p>
<p class="maodian"><a name="_lab2_3_5"></a></p><h3>SFTP 访问</h3>
<p>以 <code>RaiDrive</code> 为例</p>
<p>协议:选择 <code>SFTP</code> 协议地址:填入<code>SFTPGo</code> 服务地址端口:填入我们前面设置的本机端口地址 <code>2022</code>账号:填入 <code>SFTPGo</code> 的用户密码:填入 <code>SFTPGo</code> 的用户对应的密码</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584852.png" /></p>
<p>如果是使用 <code>WinSCP</code>,也可以参考上面👆的设置</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584853.png" /></p>
<p class="maodian"><a name="_lab2_3_6"></a></p><h3>WebDAV 访问</h3>
<p>按安装时的环境变量设置,<code>WebDAV</code> 的访问地址是 <code>http://群晖IP:2023</code></p>
<p>以 <code>RaiDrive</code> 为例</p>
<p>协议:选择 <code>WebDAV</code> 协议地址:填入<code>SFTPGo</code> 服务地址端口:填入我们前面设置的本机端口地址 <code>2023</code>账号:填入 <code>SFTPGo</code> 的用户密码:填入 <code>SFTPGo</code> 的用户对应的密码</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584854.png" /></p>
<p>如果是使用 <code>WinSCP</code>,也可以参考上面👆的设置</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584855.png" /></p>
<p>在 <code>RaiDrive</code> 中添加成功后</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584856.png" /></p>
<p>可以在资源管理器中直接访问</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584857.png" /></p>
<p>这和我们在 <code>WebClient</code> 看到的结构是一致的</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584858.png" /></p>
<p>用 <code>WinSCP</code> 也是一样的</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202408/2024080610584859.png" /></p>
<p class="maodian"><a name="_label4"></a></p><h2>参考文档</h2>
<blockquote><p>drakkan/sftpgo: Fully featured and highly configurable SFTP server with optional HTTP/S, FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob<br />地址:<a href="https://github.com/drakkan/sftpgo" rel="external nofollow"target="_blank">https://github.com/drakkan/sftpgo</a></p></blockquote>
<blockquote><p>SFTPGo - Bring your file transfers anywhere<br />地址:<a href="https://sftpgo.com/" rel="external nofollow" target="_blank">https://sftpgo.com/</a></p></blockquote>
<blockquote><p>SFTPGo documentation<br />地址:<a href="https://sftpgo.github.io/latest/" rel="external nofollow" target="_blank">https://sftpgo.github.io/latest/</a></p></blockquote>
<p>到此这篇关于开源SFTP服务器软件SFTPGo的文章就介绍到这了,更多相关SFTP服务器软件SFTPGo内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
頁:
[1]