使用SSH密钥进行Linux SFTP认证是一种安全且方便的方法,可以避免每次连接时输入密码。以下是详细步骤:
首先,你需要在本地机器上生成一个SSH密钥对。如果你已经有一个密钥对,可以跳过这一步。
在终端中运行以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa
指定生成RSA密钥。-b 4096
指定密钥长度为4096位。-C "your_email@example.com"
添加一个注释,通常是你的电子邮件地址。按照提示操作,你可以选择密钥的保存位置和设置一个可选的密码短语。
接下来,你需要将生成的公钥(通常是 ~/.ssh/id_rsa.pub
)复制到远程服务器的 ~/.ssh/authorized_keys
文件中。
你可以使用 ssh-copy-id
命令来完成这一操作:
ssh-copy-id user@remote_host
user
是你在远程服务器上的用户名。remote_host
是远程服务器的IP地址或域名。运行命令后,系统会提示你输入远程服务器用户的密码。输入密码后,公钥将被复制到远程服务器的 ~/.ssh/authorized_keys
文件中。
为了确保SSH客户端使用密钥进行认证,你可以编辑或创建 ~/.ssh/config
文件,添加以下内容:
Host remote_host
HostName remote_host
User user
IdentityFile ~/.ssh/id_rsa
Host
是你给远程主机的别名。HostName
是远程主机的实际IP地址或域名。User
是你在远程服务器上的用户名。IdentityFile
是你的私钥文件路径。现在,你可以使用SFTP连接到远程服务器,而无需输入密码:
sftp user@remote_host
或者使用你配置的别名:
sftp remote_host
连接成功后,你应该能够看到SFTP提示符,表示你已经通过SSH密钥认证成功。
~/.ssh
目录和 ~/.ssh/authorized_keys
文件的权限正确。通常,~/.ssh
目录的权限应为 700
,~/.ssh/authorized_keys
文件的权限应为 600
。通过以上步骤,你就可以使用SSH密钥进行Linux SFTP认证了。这种方法不仅安全,而且非常方便。