在Linux系统中,使用SFTP(SSH File Transfer Protocol)进行文件传输时,可以通过配置SSH密钥认证来提高安全性。以下是配置SSH密钥认证的步骤:
1. 生成SSH密钥对
首先,在客户端机器上生成SSH密钥对。如果已经存在密钥对,可以跳过此步骤。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
执行上述命令后,系统会提示你输入文件保存位置和密码短语(可选)。默认情况下,密钥对会保存在~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)。
2. 将公钥复制到服务器
接下来,将生成的公钥复制到服务器的~/.ssh/authorized_keys
文件中。可以使用ssh-copy-id
命令来完成这一操作。
ssh-copy-id user@server_ip
执行上述命令后,系统会提示你输入服务器用户的密码。成功后,公钥会被添加到服务器的authorized_keys
文件中。
3. 配置SSH服务器
确保服务器的SSH配置文件/etc/ssh/sshd_config
允许使用密钥认证。编辑该文件:
sudo nano /etc/ssh/sshd_config
找到并确保以下配置项被启用:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如果这些配置项被注释掉(前面有#
),请去掉注释并保存文件。
4. 重启SSH服务
修改配置文件后,重启SSH服务以使更改生效。
sudo systemctl restart sshd
5. 使用SFTP进行连接
现在,你可以使用SFTP通过密钥认证连接到服务器。
sftp user@server_ip
系统会提示你输入密码短语(如果设置了的话)。成功后,你将进入SFTP命令行界面。
6. 配置SSH客户端(可选)
为了方便使用,可以在客户端的~/.ssh/config
文件中添加服务器的配置。
nano ~/.ssh/config
添加以下内容:
Host server_ip
HostName server_ip
User user
IdentityFile ~/.ssh/id_rsa
保存并退出编辑器。之后,你可以直接使用sftp server_ip
命令连接到服务器,而无需每次都输入用户名和私钥路径。
通过以上步骤,你已经成功配置了Linux SFTP的SSH密钥认证。这样可以提高文件传输的安全性,并减少密码泄露的风险。