使用identity_file时SCP会提示输入密码,但SSH不会

使用identity_file时SCP会提示输入密码,但SSH不会

我使用 创建了一个新密钥,ssh-keygen -t rsa但没有密码。然后我使用 传输了密钥,然后使用 或 scp ssh 连接到主机,它允许我登录,而无需输入密码。但是,当我尝试使用命令 scp 时,它会提示我输入密码。ssh-copy-id [email protected]ssh '[email protected]'scp -i ~/.ssh/id_rsa.pub test.wav [email protected]:/home/test/

当我使用该选项时,它仅提示输入密钥和用户的密码-i identity_file,我想避免这种情况,以便它可以在脚本中运行。

答案1

scp -i ~/.ssh/id_rsa.pub test.wav [email protected]:/home/test/

您在此处使用了错误的密钥文件。扩展名为“.pub”的文件是民众密钥文件。对应的没有“.pub”扩展名的文件是私人的密钥文件。当你运行 ssh 客户端连接到远程服务器时,你必须向 ssh 客户端提供私钥文件。

~/.ssh/id_rsa是 ssh 默认尝试的密钥之一。如果ssh无需指定显式密钥即可进行身份验证,那么scp可能也可以这样做:

scp test.wav [email protected]:/home/test/

如果要指定密钥文件,请指定不带“.pub”扩展名的文件:

scp -i ~/.ssh/id_rsa test.wav [email protected]:/home/test/

答案2

使用无扩展名的文件,而不是 .pub 文件。如果您不想使用带密码的密钥文件,请尝试使用密码

sshpass -p "" scp -i ~/.ssh/id_rsa test.wav [email protected]:/home/test/

用你的密钥的密码替换密码。

从存储库安装 sshpass(例如 sudo apt-get install sshpass)

相关内容