返回主页内容

 


回复

发生了一些事,在这里回顾:

警告!此话题目前被锁定
只有管​​理员和版主可以回复。

:
快捷键:ALT+ S提交/发布 或 ALT+ P预览

其他选项

验证:

主题摘要

发布 由 neko酱 - 四月 30, 2020, 08:31:05
FileZilla是FTP+FTPS,没有SFTP
FTPS在一定程度上也可以保证安全。

一般情况下,sftp和ssh绑定在一起,要是密码被破解就非常非常糟糕了,因此我比较推荐用ed25519密钥来验证。

关于SFTP服务端的话,我比较推荐用系统自带的。

win10可以用可选功能中自带的OpenSSH Server,需手动勾选安装。

win10设置---应用---可选功能---添加功能


安装完成后,以管理员身份打开powershell,然后输
代码: [选择]
Set-Location C:\ProgramData\ssh
Remove-Item -Force ssh_host*
ssh-keygen -t ed25519
#根据提示创建完成后,接着把它添加到管理员的authorized_keys里。
Copy-Item ${HOME}\.ssh\id_ed25519.pub administrators_authorized_keys
#你也可以把公钥添加至当前用户的authorized_keys里
Set-Location ${HOME}\.ssh
Copy-Item id_ed25519.pub authorized_keys
#之所以用复制,而不是追加写入,是因为powershell默认不是UTF-8编码,Get-Content再>>会导致authorized_keys乱码。就算是手动-encoding UTF8也不是标准的utf8。若需要添加多行公钥的话,那还是手动追加写入比较好。
代码: [选择]
#修改sshd配置文件
notepad sshd_config
一定要改的是端口号,删掉Port前的"#"号,并将22改成其他端口号。
默认22端口很容易被攻击

sftp默认应该会自动加载


保存完配置文件后,添加指定TCP端口的防火墙入站规则。


所有步骤都配置完成后,重启sshd服务。
以管理员身份打开powershell
代码: [选择]
Restart-Service sshd
之后就不用管了,sshd默认应该会开机自启。

你可以试着连接一下ssh,以普通用户身份打开powershell,输
代码: [选择]
ssh -p 4998 -i ~/.ssh/id_ed25519 localhost
也可以试着连接sftp,下处"-P"为大写
代码: [选择]
sftp -P 4998 -i ~/.ssh/id_ed25519 localhost
如果需要用其他设备来连接的话,那么连接命令需做相应的修改
代码: [选择]
ssh -p 端口号 -i 私钥文件路径 用户名@ip地址或主机名
--------------------------------
若出现错误的话,那可以先试着删掉已知主机
相关文件位于${HOME}/.ssh/known_hosts
代码: [选择]
ssh-keygen -R [localhost]:4998
再者就是修改文件权限了。
右击ssh相关的文件或文件夹
->属性->安全->高级
修改文件所有者并禁用继承。
如果是linux的话,那就是
代码: [选择]
chown $(whoami):$(whoami) -R ~/.ssh
chmod 600 -R ~/.ssh
chmod u+x ~/.ssh
-----------------------
上面是我手打的,好久都没有用win10开启sshd了,不知道会不会打错。
如果不是win10的话,那可以去github下载。
虽安装步骤略有区别,但配置原理是差不多的。
发布 由 neko酱 - 四月 28, 2020, 11:27:16
无聊的帖子总需要音乐来做伴。


咱不是标题党哦!( ̄▽ ̄) 这篇帖子距离搭建个人云盘只有一步之遥了。
因为本贴更侧重于局域网内的共享(文件传输),所以并没有写签发TLS证书,启用0RTT和配置HTTP/3那些玩意儿。
             
下文的linux代指Debian GNU/Linux
如果命令执行失败,那么请输
代码: [选择]
sudo su - 
切换到root账号。
Q: sudo是什么呢?
A: 你可以看一下别人的twitter

---------------------
文件传输有多种方式。

对于win10来说,最简单、靠谱的是系统自带的SMB;对于GNU/Linux来说,则可能是SFTP。
最不靠谱的是通过QQ、Wechat等聊天工具来传输。因为你的数据经过第三方服务器,文件有可能会经过审核。
最安全的可能是SSH文件传输(SFTP),但是速度可能也是最慢的。

注:1、SSH为了安全,而牺牲了速度。
2、SCP也是借助ssh来传输,但是我觉得它的功能比SFTP弱一些。
虽然有可能存在比ssh更安全的东西,但是我不怎么想去了解。
--------------
传输速度比较快的是FTP、WebDAV和SMB。
WebDAV 和FTP都可以用多线程来提高传输速率。
---------------------
SMB

不同版本号的SMB之间有明显的差距。
以最显而易见的传输速率为例,旧版v1.0有点慢,新版就快很多了。
我记得几年前在手机上用ES文件浏览器传输局域网文件,在802.11ac WiFi网络环境下,SMB(貌似是1.0)传输速率从来都不超过10MiB/sec。
------------------
FTP

实测套了TLS加密的FTPS/FTPES(显/隐式)的协议比FTP慢很多
注:SFTP和FTPS是不同的!

速率并不是越快越好,你还要考虑到文件传输过程中的断点续传,多媒体文件播放等问题

尽管FTP非常快,但是我觉得它并不适合流媒体传输。
就比说我在看视频时,拖动进程条可能会有很严重的延迟。
相比之下,WebDAV 大概是这三者中最适合用于看视频的了。

-----------------
WebDAV

之前我看别人的评价说owncloud自带的WebDAV不如直接用nginx部署。
虽然咱也没用过owncloud,但是之前用过其它的私有云盘解决方案。
尽管它们真的很强,但是总觉得效率不如直接用那些更底层的东西。
如果你需要在互联网上进行传输,而不是局域网的话,那么还是非常推荐使用那些基于PHP的私有云盘解决方案

-------------------
至于其它协议,比如适合用于同步文件的Rsync等,并不在本贴的讨论范围内。
远程桌面也可以用来传输文件,但是效率的话,emmmm,能用就行吧!
我觉得图个方便倒是可以,但是传大批量文件的话,真的不怎么推荐。
----------------
本贴是我的经验之谈。
因为我懒得去统计数据,所以看起来很主观。
接着下开始放教程喽!
--------------------
教程一:
在windows上用FileBrowser

这个软件真的可以称得上简单好用,可惜原开发者已经停止维护了!
我写了几个脚本来配置它。
网盘01
网盘02 提取码: file

初始账号neko
初始密码[email protected]
初始端口38080
本机默认访问地址为http://localhost:38080
局域网访问地址为192.168.x.x:38080
请将192.168.x.x修改为具体ip。
默认情况下,脚本会自动识别出ip+端口号,并生成访问地址。
请务必在进入管理界面后,修改账号密码信息,并关闭允许用户注册功能。
若局域网内无法连接,则请手动允许filebrowser.exe通过Defender防火墙。

脚本使用说明
start :前台启动,当进程异常终止时自动重启;
stop :停止;
ProcessStatus :查看进程状态;
background run :后台运行,当进程异常终止时不会自动重启,但会生成错误日志。
--------------------------------------
教程二:
在GNU/Linux上安装、配置FileBrowser
你可以用原开发者写的一键安装脚本(适用于所有架构)
代码: [选择]
bash <(curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh)
亦可手动安装(适用于amd64)
代码: [选择]
if [ ! $(command -v curl) ]; then 
    sudo apt update
    sudo apt install -y curl
fi
curl -Lo  /tmp/filebrowser.tar.gz  https://github.com/filebrowser/filebrowser/releases/download/v2.1.0/linux-amd64-filebrowser.tar.gz
cd /usr/local/bin
tar -zxvf /tmp/filebrowser.tar.gz filebrowser
rm -fv /tmp/filebrowser.tar.gz
配置步骤
代码: [选择]
 cd /etc
#初始化数据库文件
filebrowser -d filebrowser.db config init
#监听0.0.0.0
filebrowser config set --address 0.0.0.0
#设定根目录为当前主目录
filebrowser config set --root ${HOME}
#端口号修改为8080
filebrowser config set --port 8080
#设置语言环境为中文简体
filebrowser config set --locale zh-cn
#修改日志文件路径
filebrowser config set --log /var/log/filebrowser.log
#新建管理员用户,neko为用户名,[email protected]为密码,请自行修改
filebrowser users add neko [email protected] --perm.admin
配置完成后,你可以输以下命令启动
代码: [选择]
filebrowser -d /etc/filebrowser.db 
打开浏览器输入ip:端口号测试一下
此处假设ip为192.168.123.234,则访问地址为
http://192.168.123.234:8080
如果成功的话,那么我们可以用systemd来配置此项服务。
代码: [选择]
cat >/etc/systemd/system/filebrowser.service<<-'EndOFsystemd'
[Unit]
Description=FileBrowser
After=network.target
Wants=network.target

[Service]
Type=simple
PIDFile=/var/run/filebrowser.pid
ExecStart=/usr/local/bin/filebrowser -d /etc/filebrowser.db
Restart=on-failure

[Install]
WantedBy=multi-user.target
EndOFsystemd
chmod +x /etc/systemd/system/filebrowser.service
systemctl daemon-reload
systemctl start filebrowser
#(可选)开机自启
systemctl enable filebrowser
配置完成后,你可以输systemctl status filebrowser 来检查进程状态。
---------------
教程二:
在GNU/Linux上用nginx搭建WebDAV服务
1.安装nginx
代码: [选择]
sudo apt update
sudo apt install -y nginx nginx-extras
2.创建nginx配置文件
代码: [选择]
cat >/etc/nginx/conf.d/webdav.conf<<-'EndOFnginx'
server {
    listen       33333;
    server_name  webdav;
    error_log /var/log/nginx/webdav.error.log error;
    access_log  /var/log/nginx/webdav.access.log combined;
    location / {
        root /media/;
        charset utf-8;
        autoindex on;
        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS;
        create_full_put_path  on;
        dav_access user:rw group:r all:r;
        auth_basic "Not currently available";
        auth_basic_user_file /etc/nginx/conf.d/.htpasswd.webdav;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
EndOFnginx
3.创建账号和密码
代码: [选择]
 sudo apt install -y apache2-utils
htpasswd -mbc /etc/nginx/conf.d/.htpasswd.webdav neko [email protected]
/etc/init.d/nginx reload
在上面的代码中,neko为用户名,[email protected]为密码,请自行修改。
33333为端口号,建议在80至65535范围之内的数字进行修改。
4.获取ip地址(若已知,则可skip)
在linux下输入
代码: [选择]
 ip -4 -br -c a 
curl ip.sb
假设获取到的ip为192.168.123.234
打开浏览器,输入192.168.123.234:33333测试一下呗!
如果成功的话,那就可以用其它客户端连接了,这样体验会更好一点。
---------------------------------
教程三:在GNU/Linux上搭建ftp服务
Linux上其实有gui(图形界面)的ftp server配置工具的,但是呢!我觉得其实并不算特别好用。
你可以用下面的命令安装
代码: [选择]
sudo apt install -y gadmin-proftpd
下面的教程跟上面那条命令没有关系。
开始教程:
1.安装ftp服务端
代码: [选择]
sudo apt install -y vsftpd
2.修改配置文件
代码: [选择]
cd /etc
cp -pf vsftpd.conf vsftpd.conf.bak

sed -i '[email protected]^listen=.*@[email protected]' vsftpd.conf
sed -i '/pasv_/d' vsftpd.conf
sed -i '/listen_port/d' vsftpd.conf

cat >>vsftpd.conf<<-'EndOFvsftpd'
listen_port=36069
pasv_enable=YES
pasv_min_port=33221
pasv_max_port=33231
pasv_promiscuous=YES
EndOFvsftpd
如果你不希望监听IPv6的话,那么可以输
代码: [选择]
sed -i '[email protected]^listen_ipv6=.*@[email protected]' /etc/vsftpd.conf
默认是禁止root登录的,如果你想要修改为允许的话,那么可以输
代码: [选择]
sed -i '[email protected]^[email protected]#&@' /etc/ftpusers
36069是端口号,在1-65535范围内(除了21,22,80和443外)可以随便改。
如果开启了防火墙的话,那么还需要允许指定端口通过它。
前几个教程也是一样的!
代码: [选择]
ufw allow 36069
ufw allow 33221:33231/tcp

---------------
教程四:
在windows 上搭建FTP服务
个人认为windows平台最佳的FTP server是FileZilla Server
安装完成后,打开FileZilla Server Interface
1、创建FTP用户和密码

2.配置访问目录,可定义aliases

3.修改设定








默认没有TLS加密,如果不想自己签发证书,那么请关掉FTP over TLS settings里的所有选项。

因为套了TLS后,速度变慢了很多,并且我只在局域网内使用它,所以我关掉了它。

(可选)若你需要把可访问的ip限定为局域网内设备,可以这样改。


请务必允许FileZilla Server通过defender防火墙,否则将有可能导致FTP无法在局域网内连接。
若允许后仍无法连接,则请手动添加特定TCP端口的防火墙入站规则。


--------------
说完了服务端,来介绍下客户端吧!

客户端的推荐:
Windows推荐RaiDrive(把云端存储设备挂载为本地磁盘)
这个软件真的是太强了!暂时还没在win平台上发现比它还强的网盘挂载软件。

安装完成后,请选择NAS,然后手动配置相关信息即可。

移动平台看下面
SolidExplorer(文件管理器)
网盘
Google Play



Nplayer(适合用来看云端视频)
网盘(Android arm64)
Google Play
AppStore


MXplayer(适合用来看本地视频,建议和SE搭配)
网盘
Google Play

--------------
本教程版权归原作者所有,转载请注明出处。
https://tmoe.me/index.php?topic=68
请在转载前,在本贴回复相关说明(包含转载处)。