我使用 创建了一个新密钥,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)