0. 查看openssh的版本
ssh -V
使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级。
1. 搭建SFTP服务器
Step-1:创建sftp组:
|
Step-2:创建一个sftp用户,用户名为mysftp,密码为mysftp:
#useradd -g sftp -s /bin/false mysftp //用户名
#passwd mysftp //密码
|
Step-3:sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,
然后指定mysftp的home为/data/sftp/mysftp:
#mkdir -p /data/sftp/mysftp
#usermod -d /data/sftp/mysftp mysftp
|
Step-4:配置sshd_config:
vi /etc/ssh/sshd_config
找到如下这行,用#符号注释掉,大致在文件末尾处。
#Subsystem sftp /usr/libexec/openssh/sftp-server
在文件最后面添加如下几行内容,然后保存。
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
|
Step-5:设定Chroot目录权限:
#chown root:sftp /data/sftp/mysftp
#chmod 755 /data/sftp/mysftp
|
Step-6:建立SFTP用户登入后可写入的目录:
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。
但使用chroot指定根目录后,
根应该是无法写入的,所以要新建一个目录供mysftp上传文件。
这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:#
mkdir /data/sftp/mysftp/upload
#
chown mysftp:sftp /data/sftp/mysftp/upload
#
chmod 755 /data/sftp/mysftp/upload
|
Step-7:修改/etc/selinux/config:
#vi /etc/selinux/config
将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。在输入命令
#setenforce 0
|
Step-8:重启sshd服务:
|
Step-9:验证sftp环境:
sftp mysftp@127.0.0.1
|
Step-10:使用FileZilla FTP Client连接SFTP服务器:
|
前面的博文中, 我们已经学习了sftp服务器的搭建, 所以这里就不再赘述了, 定sftp服务器的用户名和密码分别为user和password. 下面, 我们来学习一下linux中常用的sftp命令, 当然, 需要linux支持sftp哈。
1. sftp user@ip
你要用sftp, 当然得登录到sftp服务器啊, 在linux的shell中执行上面的命令后, linux shell会提示用户输入密码, 我们就输入password吧。 这样就成功建立了sftp连接。
2. help
建立连接后, linux shell中的$编程了sftp>, 这也对。 现在执行以下help, 可以看看sftp支持哪些命令。
3. pwd和lpwd
pwd是看远端服务器的目录, 即sftp服务器默认的当前目录。 lpwd是看linux本地目录。
4. ls和lls
ls是看sftp服务器下当前目录下的东东, lls是看linux当前目录下的东东。
5. put a.txt
这个是把linux当前目录下的a.txt文件上传到sftp服务器的当前目录下。
6. get b.txt
这个是把sftp服务器当前目录下的b.txt文件下载到linux当前目录下。
7. !command
这个是指在linux上执行command这个命令, 比如!ls是列举linux当前目录下的东东, !rm a.txt是删除linux当前目录下的a.txt文件。
这个命令非常非常有用, 因为在sftp> 后输入命令, 默认值针对sftp服务器的, 所以执行rm a.txt删除的是sftp服务器上的a.txt文件, 而非本地的linux上的a.txt文件。
8. exit和quit
退出。
总之, 连接后, 有一个help命令, 足矣足矣。