当前位置: 首页 > Linux

在Linux(CentOS)上配置SFTP

时间:2023-04-06 20:52:58 Linux

配置sftp与传统的ftp服务相比,SFTP更方便、更安全。一般在系统安装ssh后,默认会安装这个服务。我们只需要简单地配置一下。但是SFTP账号是建立在SSH账号(即系统账号)基础上的。默认情况下,对服务器的访问权限很大。下面的教程就是教大家限制ftp等SFTP账号相关的访问权限。必要条件:你的openssh-server版本至少要4.8p1,因为配置权限需要通过版本新增的配置项ChrootDirectory来完成。如何检查我的服务器上的ssh版本?试试下面的命令$ssh-V具体实现步骤我们需要创建一个专门给sftp用户的用户组$groupaddsftpusers我们创建一个用户test$useradd-s/bin/false-Gsftpuserstest注意这里我们要测试shell用户的设置为/bin/false,这样他就没有登录shell的权限了。编辑/etc/ssh/sshd_config,找到Subsystem配置项,修改为Subsystemsftpinternal-sftp为什么使用internal-sftp而不是默认的sftp-server,这是因为:这是一个进程内sftp服务,当用户ChrootDirectory,它不会请求任何文件;更好的性能,无需为sftp打开另一个进程。然后在文件末尾添加配置,设置属于用户组sftpusers的用户只能访问自己的home文件夹#匹配用户组,如果要匹配多个组,用逗号分隔MatchGroupsftpusers#指定登录用户到自己的用户目录ChrootDirectory%h#指定sftp命令ForceCommandinternal-sftp#这两行,如果不想让用户使用端口转发,就加上,否则删除X11ForwardingnoAllowTcpForwardingnoSave并关闭文件修改test用户家文件夹的权限,让它属于root用户chownroot~test重启sshd服务$servicesshdrestartor$systemctlrestartsshdtestuseraccount$sshtest@localhostconnectionwillberejectedorcannotlogin$sftptesst@localhostlogin之后,你会发现你的账号不能切换到你家目录以外的地方。常见问题:如果连接服务器出现如下提示:>Writefailed:Brokenpipe>Couldn'treadpacket:Connectionresetbypeer这个问题的原因是ChrootDirectory的权限问题。你设置的目录必须是root用户所有的,否则会出问题。所以请确保sftp用户根目录的属主为root,权限为750或755。注意以下两个原则:目录属主从目录开始一直到系统根目录只能是root,用户组不需要是root。从目录开始到系统根目录,不能有组写权限。参见http://serverfault.com/questi...配置sublimetext3的sftp插件,使用st3的打包工具搜索安装sftp。详情可以参与以下文章:sublimetext3安装、配置sftp插件"upload_on_save":true,"sync_down_on_open":true,"host":"xxx.com","user":"xxx","password":"xxx","port":"22","re??mote_path":"/xxx/xxx",sftp的remote_path和ftp的remote_path不同,ftp的值是可以远程看到的目录和子目录,而sftp是指远程服务器上的目录路径,如/home/html。将upload_on_save设置为true以在您保存时自动上传到服务器。设置sync_down_on_open为true,当你打开本地文件进行编辑时,会自动下载远程文件更新本地。