最近在调试一个自己做的工具,向SFTP上传整个文件夹内的内容,上传完成后要删除本地文件夹内所有的内容。

打算自己搭建一个docker测试平台,就用了公司服务器的版本的centos6.6搭建了一个运行平台

搭建教程请看: https://blog.csdn.net/weixin_41295682/article/details/80480422 

 

这里我用的是本机的 4022端口映射容器内的22端口,安装完成后发现使用sftp账号登录不上去,但是ssh sftp root账号却可以登录...

在使用上面教程专门设置的sftp账号登录时候 会报错:

Connection to 127.0.0.1 closed by remote host.
Connection to 127.0.0.1 closed.

 

这里用 sftp -oPort=4022 -vvv user1@127.0.0.1  登录和调试     其中 -vvv 的目的目的是在连接时候开启debug

我这里的调试信息中关键的是:

....

debug1: fd 0 clearing O_NONBLOCK
debug3: fd 1 is not O_NONBLOCK

...

如果你连接sftp时候也跟我报一样的错,那么问题就快解决了

 

查找你的/etc/ssh/sshd_config 文件中的 ChrootDirectory 这一个文件夹它要求 它的所有者是 root 所有group也是root

 

找到对应的文件夹 用命令 chown root: <文件夹位置>来更改文件夹权限

然后在这个文件夹下面生成任意一个文件夹,命令chown user1: <新的文件夹>  (这里的user1 改为你要用sftp登录的用户)

给这个文件夹的所有者换成sftp用户

 

这样你就能连接上sftp,并且在登录后的文件夹里仅有上面新建的文件夹,在新建的文件夹里这个用户可以任意操作,文件夹外不能操作。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐