SFTP / SCP / FTP 三种文件传输协议的区别


Winscp 是 Windows 平台非常给力的 类 unix 系统传输工具,它提供 SFTP / SCP / FTP 三种传输协议。
一般情况下 Linux、Openwrt 都默认开通 SCP 协议,但不一定开通 SFTP,而 FTP 协议更是需要安装 FTP 软件才能支持。
之所以这样,是因为我们有了 SCP 就能够满足和服务器传输文件的需要。
但是,Winscp 没有 MAC 平台版本,对应地,Filezilla 是跨 Windows、Mac、Linux 平台,
Mac 用户可以通过 Filezilla 来完成类似于 Winscp 的使命。
然而,Filezilla 不支持 SCP 协议,它只支持 SFTP / FTP 协议。
所以,像 Openwrt 默认不支持 SFTP 的就需要安装 SFTP 才能够让 Filezilla 连接。
Openwrt利用如下方法支持 SFTP,安装后就可以启用 SFTP 了。

opkg update
opkg install openssh-sftp-server

说完了安装方法就来总结一下三种协议的区别:

  1. SFTP / SCP 协议都是由 SSH 服务来提供支持,而 FTP 协议是由 FTP 软件,如 Vsftp 来提供支持;
  2. SFTP / SCP 协议都是加密的,而 FTP 协议可以加密,也可以明文;
  3. SFTP / SCP 协议可以由系统用户和普通用户连接,而 FTP 一般由指定的用户才能链接;
  4. SFTP 和 FTP 并没有一毛钱关系,SFTP 并不是 FTP over SSL;
  5. SFTP / SCP 的区别是,SFTP 能像 FTP 一样,支持断点续传,而 SCP 不能。

创建Aria2启动脚本


脚本内容如下:

#!/bin/sh
#!/bin/bash
### BEGIN INIT INFO
# Provides:          aria2
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO

USER=sh_user
CONF=/etc/aria2/aria2.conf
BIN=/usr/local/bin/aria2c
case "$1" in
start)
    echo "Start aria2c"
    su - $USER -c "$BIN --conf-path=$CONF"
    ;;
stop)
    echo "Stopping aria2c, please wait..."
    killall -w aria2c
    ;;
restart)
    echo "Stopping aria2c, please wait..."
    $0 stop
    echo "Start aria2c"
    $0 start
    ;;
*)
    echo "$0 {start|stop|restart|status}"
    ;;
esac
exit

增加脚本运行权限

chmod +x /etc/init.d/aria2

设置aria2服务开机自动运行

update-rc.d aria2 defaults

安装NAS软件注意事项


NAS无非就是共享和下载

要处理好这两个问题,最重要是处理好文件的权限!

下面记录一下主要步骤:

1、建立一个共享组和若干用户,前者用来定于共享文件夹的权限,后者用来运行特定的软件。

2、创建共享文件夹

mkdir -p /home/share

3、设置共享文件夹属于共享用户、共享组,并设置权限

chown -R sh_user:sh_group /home/share
chmod -R 2775 /home/share

4、设置共享用户的umask为002

echo "umask 002" >> /home/sh_user/.profile

5、以共享用户身份运行软件

su - sh_user -c "command_line"

6、设置 transmission 和 samba 的 umask

samba直接在共享区段添加mask:

# 新建文件的权限为 2664
create mask = 2664
# 新建目录的权限为 2775
directory mask = 2775

Transmission修改umask如下:

"umask": 2,

Transmission这个umask是8进制数字,默认是18,即umask是022。


Aria2 配置说明


这是一份 Aria2 配置范本,保存成 conf 文件,用命令 aria2c --conf-path=<PATH> 调用,配置为:

enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-secret=secret
max-concurrent-downloads=5
continue=true
max-connection-per-server=5
min-split-size=10M
split=10
max-overall-download-limit=0
max-download-limit=0
max-overall-upload-limit=0
max-upload-limit=0
input-file=/some/where/aria2.session
save-session=/some/where/aria2.session
dir=/some/where
file-allocation=falloc

配置中各项参数说明:

关于RPC的选项:

#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许非外部访问
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#如果启动时出现 Initializing EpollEventPoll failed. 或相似错误, 在配置中加上 event-poll=select
#使用token验证(建议使用,需要1.18.4以上版本,帐号密码方式将在后续版本中停用!)
# token验证
rpc-secret=secret
在YAAW中使用 http://token:secret@hostname:port/jsonrpc 的地址格式设置secret.
如果需要使用密码验证(需要1.15.2以上,1.18.6以下版本)
#用户名
rpc-user=username
#密码
rpc-passwd=passwd
在YAAW中使用 http://username:passwd@hostname:port/jsonrpc 的地址格式设置密码.
对于RPC模式来说, 界面和后端是分离的, 只要给后端设置密码即可. 前端认证什么的是毫无意义的.
如果你比较新潮, 在YAAW中也可以用 ws:// 为前缀,只用websocket连接aria2c, 如果你不知道websocket是什么. 那就算了.

关于速度的选项:

#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*

关于进度保存:

aria2c只有在正常退出时(ctrl-c), 突然断电是无法保存进度的. 在第一次使用的时候会出现会话文件不存在的错误, 手动创建一个空文件即可. 如果您编写的是自动启动脚本, 在启动aria2前加上 touch aria2.session 这句命令.
input-file=/some/where/aria2.session
save-session=/some/where/aria2.session
#定时保存会话,需要1.16.1之后的release版
#save-session-interval=60
磁盘相关
#文件保存路径, 默认为当前启动位置
dir=/some/where
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc

BT相关:

#启用本地节点查找
bt-enable-lpd=true
#添加额外的tracker
#bt-tracker=,…
#单种子最大连接数
#bt-max-peers=55
#强制加密, 防迅雷必备
#bt-require-crypto=true
#当下载的文件是一个种子(以.torrent结尾)时, 自动下载BT
follow-torrent=true
#BT监听端口, 当端口屏蔽时使用
#listen-port=6881-6999
aria2亦可以用于PT下载, 下载的关键在于伪装
#不确定是否需要,为保险起见,need more test
enable-dht=false
bt-enable-lpd=false
enable-peer-exchange=false
#修改特征
user-agent=uTorrent/2210(25130)
peer-id-prefix=-UT2210-
#修改做种设置, 允许做种
seed-ratio=0
#保存会话
force-save=true
bt-hash-check-seed=true
bt-seed-unverified=true
bt-save-metadata=true
#定时保存会话,需要1.16.1之后的某个release版本(比如1.16.2)

调试须知:

1、调试时不要运行在Daemon(-D)模式,待调试完成,再添加Daemon运行模式
2、检查RPC是否可以联通,可以通过访问以下地址:http://hostname:port/jsonrpc?jsoncallback=1 如果没有内容返回,则说明调用失败,请确认aria2是否启动以及连通性. 如果aria2在路由器后或没有公网IP, 请做好端口映射。


解决Debian提示key无效的问题


Debian 系统运行 apt-get update ,提示如下:

W: There is no public key available for the following key IDs:
4D270D06F42584E6

解决方法:

apt-get install debian-keyring debian-archive-keyring
apt-key update

ssh 和 scp 连接非 22 端口服务器的方法


ssh 连接非 22 端口服务器的方法:

ssh -p 29966 root@远程 ssh 服务器的 ip #小写 p

scp 远程拷贝非 22 端口的服务器文件的方法:

上传文件到服务器

scp -P 29966 /Users/ianMac/Desktop/progit.zh.pdf root@远程 ssh 服务器的 ip:/home/wwwroot #大写 P

下载文件到本地

scp -P 29966 root@远程 ssh 服务器的 ip:/home/wwwroot/index.html /Users/ianMac/Desktop/

上传本地目录中的所有文件到服务器上

scp -P 29966 -r /Users/ianMac/Desktop/. root@远程 ssh 服务器的 ip:/home/wwwroot/ #-r 是将目录下的目录递归拷贝。"." 是将隐藏文件也拷贝过去。

下载服务器上目录中的所有文件到本地目录中

scp -P 29966 -r root@远程 ssh 服务器的 ip:/home/wwwroot/.* /Users/ianMac/Desktop/

原文地址:http://www.ianisme.com/it/1611.html