开始搭建sftp服务
第1歩,添加sftp用户并制定根目录:
useradd -d /ygsoft/sftp -s /bin/bash sftpuser
第2歩,修改密码:执行passwd sftpuser,然后输入密码,2次密码需一致即可
第3歩,修改配置文件,执行vi /etc/ssh/sshd_config ,在里面添加如下信息:先注释掉以下一行#Subsystem sftp /usr/libexec/openssh/sftp-server
然后添加以下5行
Subsystem sftp internal-sftp
Match User sftpuser
#X11Forwarding no
#AllowTcpForwarding no
#ForceCommand internal-sftp
第4歩,设置根目录的访问权限:
chmod -R 775 /ygsoft/sftp(可选)
第5歩 可以省略,更改默认的22端口,找到配置文件
/etc/ssh/ssh_config和sshd_config,
vi ssh_config和sshd_config修改Port为10022 注释掉22端口
第6歩,重启sshd进程,使配置生效:
service sshd restart
至此,sftp服务器就搭建好了,使用命令:sftp sftpuser@192.168.8.8登陆一下,登陆成功说明搭建成功。也可使用winsp客户端(filezilla)登陆即上传下载文件。
注:如果在配置文件里面增加了ChrootDirectory /ygsoft/sftp ,那么根目录的拥有者和属组必须是root,此时目录权限应这样设置:
chown root:root/ygsoft/sftp
chmod 755 /ygsoft/sftp
此时只有用户root对/ygsoft/sftp目录有写入权限,而使用sftpuser这个用户登陆后是没有写入权限的,故需要在/home/sftp/目录下再新建一个文件夹zjjk,并赋予sftpuser读写权限,这样才能完成sftp操作。
#mkdir -p /ygsoft/sftp/zjjk
# chmod -R 775 /ygsoft/sftp/zjjk
由此可见,在配置文件中增加了ChrootDirectory后,需要特别注意权限问题。常见问题:
1sftp登录时报错:
Connecting to192.168.8.8..
/etc/ssh/ssh_config:line 60: Bad configuration option: UseDNS
/etc/ssh/ssh_config:terminating, 1 bad configuration options
Couldn't readpacket: Connection reset by peer
该问题是由dns解析导致,在客户端的配置文件/etc/ssh/ssh_config中查看是否有UseDNS no,如果有,注释掉该行。
2sftp连接时特别慢而且警告:reverse mapping checking getaddrinfo for bogon [192.168.8..8] failed- POSSIBLE BREAK-IN ATTEMPT!
可能原因:在sftp服务器上找到配置文件/etc/ssh/sshd_config,将GSSAPIAuthenticationyes 改为GSSAPIAuthentication no。