次の C プログラムは、「/Users/home/tempdir」ディレクトリのディレクトリ リストをコンパイルして吐き出します。
#include <stdio.h>
#include <unistd.h>
int main(int argc, const char * argv[])
{
execl("/bin/ls", "ls", "/Users/home/tempdir");
// execl("/usr/bin/scp", "scp", "myfile.txt home@127.0.0.1:/Users/home/scpdir");
return 0;
}
これは、C プログラムからバイナリ ファイルを実行できることを示しています。「scp」バイナリファイルを実行し、必要なパスフレーズを入力する方法を見つけようとしています。上記のコードを変更して、 scp 経由でファイル転送を成功させるにはどうすればよいですか?
上記のコメントアウトされた行を試しましたが、コメントを外すと次のメッセージが表示されます。
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 ... [[user@]host2:]file2
したがって、明らかにパスワードなしで scp を実行しようとしています。どうすればこれを回避できますか?