リモートLinuxサーバーにgitリポジトリを設定して、ssh経由で接続し、シングルログインを数人の友人とかなり安全な方法で共有できるようにしようとしています。FORCE_COMMAND
sshdがsshconfig (を指す)のsetを介してduo securityを呼び出すため、問題が発生しています'/usr/sbin/login_duo'
。私はこれを回避することにしました。そこで、gitコードをチェックアウトし、(shell.cで)変更を加えるのに十分なCを取得して、/ usr / sbin/login_duo呼び出しとrun_shell()
通常のgit-shellプロンプトを作成する呼び出しを無視するようにしました。git clone
(呼び出しがシェルで終わるとは思わないので、これは正しい解決策ではないと確信していますが、この質問はまだ有効なようです)
とにかく、git>
プロンプトを表示することができましたが、渡した入力を処理していないようです(Enter / Exitと入力して、Returnキーを押した後)。「gitgotx」と表示されると思いますが、そこにあります。何か案は?
fprintf(stderr, "git> ");
if (strbuf_getline(&line, stdin, '\n') == EOF) {
fprintf(stderr, "\n");
strbuf_release(&line);
break;
}
fprintf(stderr, "git got %s\n", line );
例:
egwor@mars:~/projects/test$ git clone ssh://git@localhost/home/git/repo1
Cloning into repo1...
git@localhost's password:
login_duo ignored <-- where I split off and call the shell function
git> exit
<--hangs-->`