SFTP服务端搭建
创建用户/用户组,配置一下目录
groupadd shbank
useradd -g shbank -s /sbin/nologin shbank
passwd shbank
# 这里配置了软连接,看需求
ln -s /data/nfs/shbank /home/shbank
chown -R root:root /home
chown -R shbank:shbank /data/nfs/shbank/upload
chown -R shbank:shbank /data/nfs/shbank/download
chmod -R 755 /home
复制SSH配置到SFTP
主要是将sftp与ssh端分离开
cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service
cp /etc/pam.d/sshd /etc/pam.d/sftpd
cp /etc/ssh/sshd_config /etc/ssh/sftpd_config
ln -sf /usr/sbin/service /usr/sbin/rcsftpd
ln -sf /usr/sbin/sshd /usr/sbin/sftpd
cp /etc/sysconfig/sshd /etc/sysconfig/sftp
cp /var/run/sshd.pid /var/run/sftpd.pid
vim /etc/systemd/system/sftpd.service
[Unit]
Description=sftpd server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sftp
ExecStart=/usr/sbin/sftpd -f /etc/ssh/sftpd_config
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
vim /etc/ssh/sftpd_config
执行 :set number 将行号显示出来后,具体修改如下:
①找到第17行,将 #Port 22 改成 Port 2222
②找到第38行,将 #PermitRootLogin yes 改成 PermitRootLogin no 也就是取消该行的注释,并将yes改成no,这行参数的目的是拒绝root用户登录
③找到116行,将 #PidFile /var/run/sshd.pid 改成 PidFile /var/run/sftpd.pid 也就是取消该行的注释,并将sshd.pid改成sftpd.pid
④找到第132行,将 Subsystem sftp /usr/libexec/openssh/sftp-server 注释 #Subsystem sftp /usr/libexec/openssh/sftp-server,并添以下5行:
Subsystem sftp internal-sftp # 指定使用sftp服务使用系统自带的internal-sftp
Match User sftpuser # 匹配sftp组的用户,若要匹配多个组,可用逗号分开
X11Forwarding no # 禁止用户使用端口转发
AllowTcpForwarding no # 禁止用户使用端口转发
ForceCommand internal-sftp # 只能用于sftp登录
⑤启动报错的话可能要注释掉下面几行
禁用selinux,启动服务
setenforce 0
sed -i "s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config
systemctl daemon-reload
systemctl restart sftpd
systemctl enable sftpd
##报错的话systemctl status sftpd看下是否需要注释一些配置
注释掉sshd的sftp远程登录
#vim /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
systemctl restart sshd_config
sftp测试
sftp -P 2222 sftpuser@127.0.0.1
get -r xxx
put xxx
报错处理
ssh: connect to host x.x.x.x port 2222: Connection refused
Connection closed
这种情况一般是目录权限导致。要确保sftp的登陆用户默认路径的上级路径全是root和755权限
同时操作目录要授权给sftp用户。比如
chown -R shbank:shbank /data/nfs/shbank/upload
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Hunter
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果