SFTP 服务,即 SSH File Transfer Protocol ,是一种安全文件传送协议,其语法与 ftp 基本一致。 SFTP 服务是基于 SSH 实现的子服务,本质上必须依赖 SSH 实现,默认没有独立的 sftp 服务进程。但可以基于 SSH 的配置规则稍作定制,生成独立的 SFTP 服务。
可以直接拷贝 sshd 生成 sftpd 二进制程序:
#cp /usr/sbin/sshd /usr/sbin/sftpd
#**lssrc -S -s sshd**
#subsysname:synonym:cmdargs:path:uid:auditid:standin:standout:standerr:action:multi:contact:svrkey:svrmtype:priority:signorm:sigforce:display:waittime:grpname:
sshd::-D:/usr/sbin/sshd:0:0:/dev/console:/dev/console:/dev/console:-R:-Q:-S:0:0:20:15:9:-d:20:ssh:
# **mkssys -p "/usr/sbin/sftpd" -s sftpd -u 0 -a "-D -f /etc/ssh/sftpd_config" -e /dev/console -i /dev/console -o /dev/console -R -Q -S -f 9 -n 15 -E 20 -G sftp -d -w 20**
0513-071 The sftpd Subsystem has been added.
基于 /etc/ssh/sshd_config 拷贝获得 /etc/ssh/sftpd_config :
# cp /etc/ssh/sshd_config /etc/ssh/sftpd_config
编辑 /etc/ssh/sftpd_config ,将端口从默认的 22 改为给定的值(此处示例为 2222 ,此后 sftp 服务端口即为 2222 ):
Port 2222
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
# **lssrc -S -s sftpd**
#subsysname:synonym:cmdargs:path:uid:auditid:standin:standout:standerr:action:multi:contact:svrkey:svrmtype:priority:signorm:sigforce:display:waittime:grpname:
sftpd::-D -f /etc/ssh/sftpd_config:/usr/sbin/sftpd:0:0:/dev/console:/dev/console:/dev/console:-R:-Q:-S:0:0:20:15:9:-d:20:sftp:
可以获取 ODM 属性进一步比较,如下:
#odmget -q subsysname=sshd SRCsubsys
#odmget -q subsysname=sftpd SRCsubsys
采用同样的方法,拷贝 sshd 的开机启动脚本,生成 sftpd 的开机启动脚本:
# cp /etc/rc.d/rc2.d/Ssshd /etc/rc.d/rc2.d/Ssftpd
修改 Ssftpd ,修改后内容如下:
# cat /etc/rc.d/rc2.d/Ssftpd
#!/bin/ksh
##################################################
# name: Ssftpd
# purpose: script that will start or stop the sftpd daemon.
##################################################
case "$1" in
start )
/usr/bin/startsrc -g sftp
;;
stop )
/usr/bin/stopsrc -g sftp
;;
* )
echo "Usage: $0 (start | stop)"
exit 1
esac
当前环境可以 startsrc -g sftp 手工启动 sftpd 进程,后续系统会根据 Ssftpd 脚本自行启动 sftp 服务:
# **startsrc -g sftp**
0513-059 The sftpd Subsystem has been started. Subsystem PID is 13762668.
#
为安全审计考虑,分离 ssh 和 sftp 后,可以将 ssh 默认的 22 端口上的 sftp 服务关闭,关闭方法如下。
编辑 /etc/ssh/sshd_config 文件,将 sftp 服务注释掉:
# override default of no subsystems
#Subsystem sftp /usr/sbin/sftp-server
测试指定端口连接 sftp 服务:
#sftp -o Port=2222 172.16.102.107
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论1 条评论
2021-01-05 09:53