[英]File transfer using SCP and C or C++
以下是我使用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 successfully\n",file);
else
printf("\nFile %s not moved successfully\n",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'
cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
。
現在,您應該可以不用密碼登錄遠程計算機。 (為此,我在家中和工作中都使用它)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.