📜  scp 权限被拒绝(公钥)但 ssh 有效 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:47:18.829000             🧑  作者: Mango

SCP权限被拒绝(公钥)但SSH有效

在Linux中,SCP是一种常用的文件传输工具,但有时会出现SCP无法工作的情况。 这种情况在使用公钥身份验证时尤其常见。 当SCP权限被拒绝时,可以尝试以下步骤解决问题。

问题描述

当尝试使用SCP将文件从本地主机复制到远程主机时,您可能会遇到错误消息“ Permission denied (publickey)”。这是由于SCP在身份验证过程中无法解密您的私钥。

确认SSH连接是否有效

在执行任何其他操作之前,应该确认SSH连接是否有效。 如果无法使用SSH连接,则必须解决此问题。

检查SSH密钥

检查是否存在SSH密钥,这是一个公钥与私钥的组合。在本地主机上运行以下命令以检查密钥文件是否存在:

ls -l ~/.ssh/id_rsa*

如果没有密钥文件,则需要创建密钥对。可以使用以下命令在本地主机上生成SSH密钥:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
将SSH公钥添加到远程主机

如果未将本地SSH公钥添加到远程主机,则需要将其添加。可以使用以下命令将SSH公钥添加到远程主机:

ssh-copy-id username@remote_host

其中,用户名应替换为远程主机上的用户名, remote_host应替换为远程主机的IP地址或主机名。执行此命令后,将提示输入远程主机的密码。

检查文件和目录权限

确认文件和目录的权限是否设置正确。即使SSH连接有效并且已将SSH公钥添加到远程主机,SCP也可能因文件和目录权限不正确而无法正常工作。

确保要复制的文件和目录的权限已正确设置。可以执行以下命令查看权限:

ls -ld /path/to/file/or/directory
解决SCP权限被拒绝的问题

如果以上步骤都没有解决SCP权限被拒绝的问题,则可以尝试以下方法以解决问题:

方法1:使用ssh连接传输文件

在本地主机上使用scp命令,但是指定-rssh选项。 这将使用SSH连接传输文件,而不是SCP。使用以下命令指定-rssh选项:

scp -rssh /path/to/local/file username@remote_host:/path/to/remote/directory
方法2:使用rsync替代SCP

使用rsync将文件从本地主机复制到远程主机。 Rsync是一个功能强大的工具,可以在本地和远程主机之间同步文件和目录。使用以下命令将文件从本地主机复制到远程主机:

rsync -avz -e ssh /path/to/local/file username@remote_host:/path/to/remote/directory
结论

SCP是在Linux中广泛使用的文件传输工具。 当SCP权限被拒绝时,可以尝试使用ssh连接或rsync来解决问题。在使用SCP之前,请确保SSH连接有效并且已将SSH公钥添加到远程主机。如果仍然无法解决问题,请尝试检查文件和目录权限。