在 CentOS 上配置 SFTP 密钥登录(通常是基于 SSH 的密钥认证),可以按下面步骤来操作。
一般 CentOS 已自带:
systemctl status sshd
如果没启动:
systemctl start sshd
systemctl enable sshd
useradd sftpuser
passwd sftpuser
mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp
chown sftpuser:sftpuser /data/sftp/sftpuser
chmod 755 /data/sftp
chmod 700 /data/sftp/sftpuser
在 客户端机器(Windows / Linux / Mac)执行:
ssh-keygen -t rsa -b 4096
默认生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub使用 PuTTYgen 生成:
.ppk(私钥)在服务器上:
mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
vi /home/sftpuser/.ssh/authorized_keys
粘贴客户端 id_rsa.pub 内容
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh
编辑:
vi /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
systemctl restart sshd
sftp -i ~/.ssh/id_rsa sftpuser@服务器IP
.ppkPermission denied (publickey)
检查:
.ssh 权限必须是 700authorized_keys 必须是 600ChrootDirectory 属主必须是 rootsetsebool -P ssh_chroot_rw_homedirs on
如果你需要 只给 SFTP 不能 SSH、多用户配置 或 使用非默认端口,可以继续问我。