虚拟机配置
1、创建sftp用户组
groupadd sftp
2、添加用户
useradd -g sftp mysftp
3、设置用户密码
passwd mysftp
4、创建文件根目录
mkdir /app/data
5、将该目录设置到用户上
usermod -d /app/data mysftp
6、修改配置文件
vim /etc/ssh/sshd_config
7、找到 Subsystem ,将之前的配置注释掉,增加新的配置
#注释掉下面一行,改用自定义的
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp #这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp #这行用来匹配用户组
ChrootDirectory /app/data #用chroot将用户的根目录指定到/app/data ,这样用户就只能在/app/data 下活动
AllowTcpForwarding no
ForceCommand internal-sftp #指定sftp命令
8、创建属于该用户的访问目录并设置用户组
mkdir /app/data/upload
chown -R mysftp:sftp /app/data/upload/
mkdir /app/data/download
chown -R mysftp:sftp /app/data/download/
9、重启sshd服务
service sshd restart
10、通过任意的sftp连接工具测试连接
我这边使用的是 WinSCP
连接后能看到下图说明服务正常(无法跳转到 /app/data 以外的路径才对,保护资源)
java 代码
1、测试代码
public static void main(String[] args) {
JSch jSch = new JSch();
Session session = null;
Channel channel