当远程登陆Linux服务器时最常用的ssh而ssh服务是由sshd提供,并且sshd还提供sftp功能。
在这里用户sftp-admin,仅能sftp连接服务器而不能ssh连接服务器。
sftp连接:OK
ssh连接:NG
创建sftp-admin用户
创建根目录为/var/www/html,组为apache的sftp-admin用户。
# useradd -d /var/www/html -s /bin/bash sftp-admin -g apache
# passwd sftp-admin
修改sshd_config文件
以下是去掉注释部分以后的/etc/ssh/sshd_config文件样本。
Port 38080 -> sshd默认端口是22在这里改为38080
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
PermitRootLogin no -> 禁止root用户直接登陆服务器
DenyUsers toor administrator administrateur admin adm test guest info mysql user oracle
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPICleanupCredentials no
X11Forwarding yes
UsePrivilegeSeparation sandbox
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server ->指定提供sftp服务的进程
Match User sftp-* ->当用户名为sftp-开始时仅能sftp登陆
ForceCommand internal-sftp
在这里最重要的是以下的部分,而其余的部分可使用默认配置。
Subsystem sftp /usr/libexec/openssh/sftp-server
Match User sftp-*
ForceCommand internal-sftp
重启sshd
# service sshd restart