1、前言
任意端口开启sftp服务的功能。操作步骤如下
2.1、确定服务器SFTP可用
使用Xshell工具连接SFTP服务器,输入systemctl status sshd,查看结果如下,表示机器SFTP已打开且可用
2.2、拷贝sftp配置文件
1、 拷贝/usr/lib/systemd/system/目录下的sshd.service文件,放到/etc/systemd/system/目录下,命名为:sftpd.service
cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service
2、 拷贝/etc/pam.d/目录下的sshd文件,放到同目录,命名为:sftpd
cp /etc/pam.d/sshd /etc/pam.d/sftpd
3、 拷贝/etc/ssh/目录下的sshd_config文件,放到同目录,命名为:sftpd_config
cp /etc/ssh/sshd_config /etc/ssh/sftpd_config
4、 对service和rcsftpd进行软连接
ln -sf /usr/sbin/service /usr/sbin/rcsftpd
5、 对sshd和sftpd进行软连接
ln -sf /usr/sbin/sshd /usr/sbin/sftpd
6、 拷贝/etc/sysconfig/目录下的sshd文件,放到同目录,命名为:sftp
cp /etc/sysconfig/sshd /etc/sysconfig/sftp
2.3 修改复制好的配置文件
1、 修改/etc/systemd/system/目录下sftpd.service文件
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
2、 修改/etc/ssh/目录下的sftpd_config文件
vim /etc/ssh/sftpd_config
//配置文件第17行,将端口改为自己想要的端口 Port 12080 //配置文件第38行,禁止root登录 PermitRootLogin no //配置文件第116行,取消该行的注释,并将sshd.pid改成sftpd.pid PidFile /var/run/sftpd.pid //配置文件第132行,将这行注释,并在最后添加6行 #Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group banks
ChrootDirectory /workspace/projects/sftpfile
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
3、 清空/var/run/目录下的sftpd.pid文件内容
# > /var/run/sftpd.pid
4、添加sftp的专用账户
//创建文件夹 mkdir -p /workspace/projects/sftpfile chmod 755 /workspace/projects/sftpfile
//添加组
groupadd banks
//创建用户并添加到组(禁止ssh登录)
useradd -g banks -s /bin/false ccb
//修改用户密码
passwd ccb
//新建ccb文件夹存放对账文件
mkdir -p /workspace/projects/sftpfile/ccb
//将ccb文件夹的所有者和组为ccb:banks
chown ccb:banks /workspace/projects/sftpfile/ccb
3、 禁用selinux
setenforce 0 sed -i "s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config
4、重启sftpd服务
systemctl daemon-reload systemctl start sftpd
5、添加开机启动项(选择使用)
//添加开机启动项 systemctl enable sftpd //查询开机启动项 systemctl list-unit-files | grep sftpd
6、sftp也可以使用密钥登录
sftp -i ccb.key -P 3170 ccb@192.168.1.111
windows 上可以使用 winscp 工具