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/null
とeval $(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
私は別の同様のスレッドで与えられた答えをコピーしています( https://stackoverflow.com/a/50942800/9966057 )。
セッション設定を微調整しようとしても無駄です。
完全な答え: https://github.com/Microsoft/WSL/issues/318
短いバージョン:ssh-agent転送は、wsl/ubuntu 18.04(または私が想像する他のLinux)のgetsockoptバグによって壊れています。
次のように、-s
パラメータを追加してみてください。
eval $(ssh-agent -s)
このパラメータは 記述 として:
-sstdoutにBourne Shellコマンドを生成します。これは、シェルがcshスタイルのシェルのように見えない場合のデフォルトです。