以下是我使用SCP将文件从本地机器传输到另一台机器的代码一切正常但是当程序执行“system(exec)”命令时,它要求输入目标用户密码。
有没有办法在sprintf语句中向exec char数组追加(或添加)另一个'%s'的密码。
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 successfully\n",file);
else
printf("\nFile %s not moved successfully\n",file);
答案 0 :(得分:3)
此处的正确解决方案是使用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'
。
现在您应该能够在没有密码的情况下登录远程计算机。 (我在家里和工作中都是为了这个目的使用它)