charleschchen
作者charleschchen·2020-04-29 16:09
系统架构师·浪潮商用机器有限公司

AIX上分离ssh和sftp服务的方法

字数 2300阅读 5189评论 1赞 1

SFTP 服务,即 SSH File Transfer Protocol ,是一种安全文件传送协议,其语法与 ftp 基本一致。 SFTP 服务是基于 SSH 实现的子服务,本质上必须依赖 SSH 实现,默认没有独立的 sftp 服务进程。但可以基于 SSH 的配置规则稍作定制,生成独立的 SFTP 服务。

1. 拷贝 sshd 程序生成 sftpd 程序

可以直接拷贝 sshd 生成 sftpd 二进制程序:

#cp /usr/sbin/sshd /usr/sbin/sftpd

2. 基于 sshd 服务生成 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

3. 设置 sftpd 默认启动

采用同样的方法,拷贝 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.

#

4. 附录

为安全审计考虑,分离 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 条评论

CJ_aneCJ_ane系统运维工程师IBM
2021-01-05 09:53
感谢分享,这边客户正好有类似的需求,想请问一下这种调整有在生产环境运行过嘛?有没有遇到什么意外情况?
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广