centos

centos SFTP配置中如何使用公钥认证

小樊
53
2025-03-25 17:26:26
栏目: 智能运维

在CentOS系统中配置SFTP以使用公钥认证,可以按照以下步骤进行:

1. 生成SSH密钥对

首先,你需要在客户端生成一个SSH密钥对。如果你还没有密钥对,可以使用以下命令生成:

ssh-keygen -t rsa -b 4096

按照提示操作,通常会生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)。

2. 将公钥复制到服务器

将生成的公钥(id_rsa.pub)复制到服务器的~/.ssh/authorized_keys文件中。你可以使用以下命令来完成这一操作:

ssh-copy-id user@server_ip

其中,user是服务器上的用户名,server_ip是服务器的IP地址。系统会提示你输入服务器用户的密码。

3. 配置SSH服务器

确保服务器的SSH配置文件/etc/ssh/sshd_config允许使用公钥认证。编辑该文件:

sudo vi /etc/ssh/sshd_config

找到并确保以下行没有被注释掉,并且设置正确:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

保存并退出编辑器。

4. 重启SSH服务

为了使配置生效,需要重启SSH服务:

sudo systemctl restart sshd

5. 配置SFTP

默认情况下,SSH服务器会为使用公钥认证的用户提供SFTP访问。如果你需要进一步限制SFTP用户的权限,可以创建一个专门用于SFTP的用户组,并将用户添加到该组中。

创建SFTP用户组

sudo groupadd sftpusers

创建SFTP用户并添加到组中

sudo useradd -m -G sftpusers sftpuser
sudo passwd sftpuser

按照提示设置密码。

配置SFTP chroot环境

编辑/etc/ssh/sshd_config文件,添加或修改以下配置:

Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

这将限制sftpusers组的用户只能使用SFTP,并且他们的根目录将被限制在他们自己的主目录中。

6. 重启SSH服务

再次重启SSH服务以应用更改:

sudo systemctl restart sshd

7. 测试SFTP连接

现在,你可以使用SFTP客户端连接到服务器进行测试:

sftp sftpuser@server_ip

如果一切配置正确,你应该能够成功登录并使用SFTP进行文件传输。

通过以上步骤,你就可以在CentOS系统中配置SFTP以使用公钥认证。

0
看了该问题的人还看了