SFTP采用的是ssh加密隧道,安装性方面较FTP强,并且依赖的是系统自带的ssh服务html
FTP还须要额外的进行安装FTP服务linux
SFTP搭建流程:服务器
一、建立SFTP组ssh
$groupadd sftp
建立完成以后使用cat /etc/group命令组的信息测试
$cat /etc/group
二、建立一个sftp用户mysftp并加入到建立的sftp组中,同时修改mysftp用户的密码加密
$useradd -g sftp -s /bin/false mysftp $passwd mysftp
三、新建/data/sftp/mysftp目录,并将它指定为mysftp组用户的home目录3d
$mkdir -p /data/sftp/mysftp $usermod -d /data/sftp/mysftp mysftp #修改mysftp用户的home目录为/data/sftp/mysftp
四、编辑配置文件/etc/ssh/sshd_configrest
$vi /etc/ssh/sshd_config
将以下这行用#符号注释掉code
# Subsystem sftp /usr/libexec/openssh/sftp-server orm
并在文件最后面添加以下几行内容而后保存
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
五、设置目录权限
$chown root:sftp /data/sftp/mysftp $chmod 755 /data/sftp/mysftp
六、新建一个目录供sftp用户mysftp上传文件,这个目录全部者为mysftp全部组为sftp,全部者有写入权限全部组无写入权限
$mkdir /data/sftp/mysftp/upload $chown mysftp:sftp /data/sftp/mysftp/upload $chmod 755 /data/sftp/mysftp/upload
七、关闭selinux并重启sshd服务,而后测试
#关闭selinux $setenforce 0 setenforce:SELinux is disabled #重启sshd服务 $systemctl restart sshd.service
在其余服务器上进行验证,sftp 用户名@ip地址
注意:openssh的版本必须大于4.8p1
--------------------------------------------------
PHPSTORM设置同步SFTP
--------------------------------------------------
一、File->Create New Project form Existing Files,选择第4个,files are accessible via FTP/SFTP/FTPS,Next
二、Project local path 选择本地项目的地址,Project name 须要与本地目录同名,Next
三、远程服务器地址10.17.11.251,填写我的帐户密码后,能够点击Test Connection测试链接是否正常。记得勾选下方的Don't check HTTP connection to server,Next
四、选择远程服务器目标项目根目录,选择后点击上方的Project Root,如目录不存在,联系管理员建立。Next
五、finish
六、远程SFTP链接已经建立完成。
同步项目时,选择目标目录或者文件,右键->Deployment->Upload to...,选择对应的远程服务器。也可以使用快捷键Ctrl+Alt+Shift+X
勾选Tools->Deployment->Automatic Upload,每次本地修改保存后会自动同步远程服务器。