在Linux系统中,使用SFTP进行公钥认证可以提供更安全的访问方式。以下是配置公钥认证的步骤:
首先,在客户端机器上生成SSH密钥对(如果还没有的话)。
ssh-keygen -t rsa -b 4096
按照提示操作,通常会生成两个文件:
~/.ssh/id_rsa
:私钥~/.ssh/id_rsa.pub
:公钥将生成的公钥复制到服务器的~/.ssh/authorized_keys
文件中。
ssh-copy-id
命令ssh-copy-id user@server_ip
系统会提示输入服务器用户的密码,成功后会自动将公钥添加到服务器的authorized_keys
文件中。
在客户端机器上查看公钥内容:
cat ~/.ssh/id_rsa.pub
登录到服务器,创建.ssh
目录(如果不存在)并设置正确的权限:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
将公钥内容追加到服务器的authorized_keys
文件中:
echo "your_public_key_content" >> ~/.ssh/authorized_keys
设置authorized_keys
文件的权限:
chmod 600 ~/.ssh/authorized_keys
确保SSH服务器允许使用公钥认证。
编辑服务器上的/etc/ssh/sshd_config
文件:
sudo nano /etc/ssh/sshd_config
找到并修改以下配置项:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
保存并退出编辑器,然后重启SSH服务:
sudo systemctl restart sshd
现在,你可以使用SFTP进行连接,无需输入密码。
sftp user@server_ip
如果一切配置正确,你应该能够成功登录并进行文件传输。
~/.ssh/id_rsa
的权限设置为600
,即只有所有者可以读写。~/.ssh
目录权限设置为700
,即只有所有者可以读写执行。sshd_config
中配置Port
选项,并重启SSH服务。通过以上步骤,你应该能够成功配置Linux SFTP的公钥认证。