SFTP怎样使用公钥认证

549
2025/3/13 0:32:14
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

使用公钥认证进行SFTP连接是一种安全且方便的方法,可以避免每次连接时输入密码。以下是详细的步骤:

1. 生成SSH密钥对

首先,你需要在本地机器上生成一个SSH密钥对。如果你已经有一个密钥对,可以跳过这一步。

在Linux或macOS上,打开终端并运行:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

按照提示操作,通常会生成两个文件:

  • ~/.ssh/id_rsa (私钥)
  • ~/.ssh/id_rsa.pub (公钥)

在Windows上,你可以使用PuTTYgen工具来生成密钥对。

2. 将公钥复制到远程服务器

接下来,你需要将生成的公钥复制到远程服务器的~/.ssh/authorized_keys文件中。

你可以使用以下命令来完成这一步:

ssh-copy-id user@remote_host

其中,user是你在远程服务器上的用户名,remote_host是远程服务器的地址。

如果你不想使用ssh-copy-id命令,也可以手动复制公钥:

  1. 在本地机器上打开~/.ssh/id_rsa.pub文件,复制其内容。
  2. 登录到远程服务器,编辑或创建~/.ssh/authorized_keys文件:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "your_public_key" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
    your_public_key替换为你复制的公钥内容。

3. 配置SSH客户端

确保你的SSH客户端配置允许使用公钥认证。编辑或创建~/.ssh/config文件,添加以下内容:

Host remote_host
    HostName remote_host
    User user
    IdentityFile ~/.ssh/id_rsa

其中,remote_host是远程服务器的地址,user是你在远程服务器上的用户名,IdentityFile是你的私钥文件路径。

4. 测试SFTP连接

现在,你可以使用SFTP连接到远程服务器:

sftp user@remote_host

如果一切配置正确,你应该能够无需输入密码即可登录到远程服务器。

5. 配置SSH服务器(可选)

为了进一步提高安全性,你可以在远程服务器上配置SSH服务器以禁用密码认证。编辑远程服务器上的/etc/ssh/sshd_config文件,确保以下配置项存在并设置为yes

PubkeyAuthentication yes
PasswordAuthentication no

然后重启SSH服务以应用更改:

sudo systemctl restart sshd

通过以上步骤,你就可以成功配置并使用公钥认证进行SFTP连接了。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: Linux ARP防火墙怎样加强保护