SFTP部署


1、创建sftp组

groupadd sftpgroup


2、创建测试用户,并设置解释器为/sbin/nologin

useradd -g sftpgroup -s /sbin/nologin sftp-user1

3、给测试用户设置密码

passwd sftp-user1

4、创建数据目录

mkdir -p /data/sftp/sftp-user1


5、设置测试账户访问目录的权限

usermod -d /data/sftp/sftp-user1 sftp-user1

6、设置ssh配置文件

vi /etc/ssh/sshd_config 
......
# Subsystem sftp /usr/libexec/openssh/sftp-server    ###注释掉该行
......
在末尾添加以下内容
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
......

7、修改测试用户目录的所有者和所属组,家目录设置为root:sftp

注意!注意!注意!/data/sftp/sftp-user1权限不要设置为sftp-user1:sftp

chown root:sftpgroup /data/sftp/sftp-user1

8、给测试用户sftp-user1目录设置755权限

chmod 755 /data/sftp/sftp-user1


9、创建测试目录

mkdir /data/sftp/sftp-user1/test

10、修改测试目录的所有者和所属组,, 测试用户目录的子目录test设置为sftp-user1:sftp

chown sftp-user1:sftpgroup /data/sftp/sftp-user1/test

11、测试目录设置权限

chmod 755 /data/sftp/sftpt-user1/test

12、关闭防火墙

systemctl stop firewalld

13、关闭防火墙开机启动

systemctl disable firewalld

14、关闭selinux

vi /etc/selinux/config 
......
SELINUX=disabled
......

15、重启ssh服务

systemctl  restart sshd

16、测试登录

sftp -P22 sftp-user1@sftp服务器地址

三、常用命令
1、使用命令?或者help可以查看命令帮助信息,如下:

sftp> ?
Available commands:
bye                                退出 sftp
cd path                            更改远程目录到 'path'
chgrp [-h] grp path                将文件 'path' 的组更改为 'grp'
chmod [-h] mode path               将文件 'path' 的权限更改为 'mode'
chown [-h] own path                将文件 'path' 的属主更改为 'own'
df [-hi] [path]                    显示当前目录的统计信息或包含 'path' 的文件系统
exit                               退出 sftp
get [-afpR] remote [local]         下载文件
help                               显示这个帮助文本
lcd path                           更改本地目录到 'path'
lls [ls-options [path]]            显示本地目录列表
lmkdir path                        创建本地目录
ln [-s] oldpath newpath            符号链接远程文件
lpwd                               显示本地工作目录
ls [-1afhlnrSt] [path]             显示远程目录列表
lumask umask                       将本地umask设置为 'umask'
mkdir path                         创建远程目录
progress                           切换是否显示文件传输进度
put [-afpR] local [remote]         上传文件
pwd                                显示远程工作目录
quit                               退出 sftp
reget [-fpR] remote [local]        恢复下载文件
rename oldpath newpath             重命名远程文件
reput [-fpR] local [remote]        恢复上传文件
rm path                            删除远程文件
rmdir path                         删除远程目录
symlink oldpath newpath            符号链接远程文件
version                            显示 SFTP 版本信息
!command                           在本地shell中执行 'command'
!                                  启动本地shell
?                                  帮助信息
sftp> 


2、退出
退出命令有3个,直接输入一个回车即断开sftp连接

bye quit exit


3、pwd和lpwd
pwd是看远端服务器的目录, 即sftp服务器默认的当前目录
lpwd是看linux本地目录

4、ls和lls
ls是看sftp服务器下当前目录下的列表
lls是看linux当前目录下的列表
5、put a.txt
这个是把linux当前目录下的a.txt文件上传到sftp服务器的当前目录下。


```bash
sftp> put /home/test.txt 
Uploading /home/test.txt to /home/test.txt
/home/test.txt                           100%    0     0.0KB/s   00:00    
sftp> ls
Desktop         Documents       Downloads       IOSAPP          Pictures        
Templates       config.json     derby.log       fontconfig      hello           
nohup.out       share           test.txt
sftp> 

6、get
这个是把sftp服务器的文件下载到linux当前目录下

sftp> get /home/hello
Fetching /home/hello to hello
/home/hello                              100%  174    45.4KB/s   00:00    
sftp>

7、!command
这个是指在linux上执行command这个命令, 比如!ls是列举linux当前目录下的东东, !rm a.txt是删除linux当前目录下的a.txt文件。
这个命令非常非常有用, 因为在sftp> 后输入命令, 默认值针对sftp服务器的, 所以执行rm a.txt删除的是sftp服务器上的a.txt文件, 而非本地的linux上的a.txt文件。

sftp> ! w
 10:27:39 up  2:07,  1 user,  load average: 1.04, 1.38, 1.96
USER     TTY      来自           LOGIN@   IDLE   JCPU   PCPU WHAT
kei      :0       :0             08:20   ?xdm?  38:27   0.01s /usr/lib/gdm3/g
sftp> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值