web-dev-qa-db-ja.com

Linux用Windowsサブシステム(WSL)でのssh-agentリセット

WSLでssh-agentを使用しようとしていますが、スクリプトの実行後にSSHパラメータが消去されます

.bashrcから(カットダウンバージョン)

eval $(ssh-agent)
ssh-add

ssh-add -l
echo "SSH_AGENT_PID is" $SSH_AGENT_PID
echo "SSH_AUTH_SOCK is" $SSH_AUTH_SOCK

パスフレーズのプロンプトには、指紋と関連する変数が表示されます

プロンプト(または別のスクリプト)の実行直後

ssh-add -l
echo "SSH_AGENT_PID is" $SSH_AGENT_PID
echo "SSH_AUTH_SOCK is" $SSH_AUTH_SOCK

与える

Could not open a connection to your authentication agent.
SSH_AGENT_PID is
SSH_AUTH_SOCK is

(読みやすさのために整理されています)

エージェントはまだ元のpid(上部でチェック)で実行されており、eval $(ssh-agent ) > /dev/nulleval $(ssh-agent -s)を組み合わせて試しました

なぜこれらは拭き取られるのですか? ssh-agentは、Windows Update1709「秋のクリエイターの更新」まで正常に機能していました

情報:linuxバージョン4.4.0-43-Microsoft([email protected])(gccバージョン5.4.0(GCC))#1-Microsoft Wed Dec 31 14:42:53 PST 2014

2
Nate

私は別の同様のスレッドで与えられた答えをコピーしています( https://stackoverflow.com/a/50942800/9966057 )。

セッション設定を微調整しようとしても無駄です。

完全な答え: https://github.com/Microsoft/WSL/issues/318

短いバージョン:ssh-agent転送は、wsl/ubuntu 18.04(または私が想像する他のLinux)のgetsockoptバグによって壊れています。

6
babebibobu

次のように、-sパラメータを追加してみてください。

eval $(ssh-agent -s)

このパラメータは 記述 として:

-sstdoutにBourne Shellコマンドを生成します。これは、シェルがcshスタイルのシェルのように見えない場合のデフォルトです。

4
harrymc