使用 SCP 和 C 或 C++ 进行文件传输

File transfer using SCP and C or C++

本文关键字:文件 传输 C++ SCP 使用      更新时间:2023-10-16

以下是我使用 SCP 将文件从本地机器传输到另一台机器的代码,一切正常,但是当程序执行"system(exec)"命令时,它要求输入目标用户密码。

有没有办法在 sprintf 语句中使用另一个"%s"将密码附加到(或添加)到 exec char 数组。

char exec[180];
sprintf(exec,"scp -o StrictHostKeyChecking=no %s/%s %s@%s:/home",current_path,filename,destination_user,dest_ip);
//printf("n %s n",exec);
if(system(exec)==0) 
printf("nFile %s moved successfullyn",file);
else
printf("nFile %s not moved successfullyn",file);

正确的解决方案是使用 RSA 或 DSA 公钥/私钥设置无密码登录。

本网站将执行必要的步骤:http://www.linuxproblem.org/art_9.html

简而言之,运行 ssh-keygen -t rsa ,并使用默认值,包括"空"密码短语(否则,系统会询问您密码短语)。[在您的机器上执行此操作]

然后使用 ssh b@B mkdir -p .ssh 创建目标机器的.ssh目录(b@B'对应远程机器上的远程用户)。

最后,将第一步中生成的密钥复制到远程计算机上的相关文件中。 cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys' .

现在,您应该能够在没有密码的情况下登录到远程计算机。(我在家里和工作中都使用它来达到这个目的)