
私は Windows 10 上の Windows Subsystem for Linux (WSL) シェル内で Ubuntu 16.04 を実行しています。ターミナル内から ssh-agent を起動し、そのターミナルの存続期間中に何度も使用できます。ps から、また Windows 10 タスク マネージャーからも ssh-agent が実行中であることを確認できます。
ただし、スタート メニューから 2 番目の WSL bash ターミナルを起動すると、ssh-agent が認識されません。奇妙なことに、Windows コマンド ラインから 2 番目のターミナルを起動すると、機能します。回避策としては、既存の bash ウィンドウから新しい bash ウィンドウを開くことが考えられますが、その方法もわかりません。
これに対する解決策はあるでしょうか?
答え1
.bashrc を変更して、実行中の既存の ssh-agent を見つけることができます。
私は、要旨
# ssh-agent configuration
if [ -z "$(pgrep ssh-agent)" ]; then
rm -rf /tmp/ssh-*
eval $(ssh-agent -s) > /dev/null
else
export SSH_AGENT_PID=$(pgrep ssh-agent)
export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
fi
# optional... potentially annoying
#if [ "$(ssh-add -l)" == "The agent has no identities." ]; then
# ssh-add
#fi
答え2
別の新しい回答があったのでこれに気付きましたが、ここでの回答のほとんどは、何らかの形の起動スクリプトの調整を提案しています(例~/.bashrc
)。車輪の再発明をするよりも、keychain
。
インストール後 (ほとんどのディストリビューション リポジトリで利用可能、例: sudo apt install keychain
)、以下を追加するだけです。
eval $(keychain --eval --agents ssh id_rsa)
... を に設定します。これにより、現在のセッションのおよび変数が既存の を指すように~/.bashrc
正しく設定されるか、必要に応じて新しい が開始されます。この方法では、開いているすべての WSL/ターミナル セッションで 1 つの共有のみが使用されます。SSH_AGENT_PID
SSH_AUTH_SOCK
ssh-agent
ssh-agent
おもしろい情報 -- これはkeychain
元々、Gentoo Linux の創設者でもある Daniel Robbins によって書かれました。
答え3
おそらくそうではありません。これは、シェルの親プロセスとして通常の方法で実行されているようですssh-agent
。その他のウィンドウには、使用しているウィンドウに結び付けられていない、独自の親/子プロセス階層があります。
仕事のやり方とのこの機能は、エージェントを起動したウィンドウ内で(または)ssh-agent
を実行することです。これらの screen/tmux ウィンドウもプロセスの子であり、問題なくプロセスと通信できます。screen
tmux
ssh-agent
答え4
あります。最新バージョンをインストールしてくださいWindows 用 OpenSSH、そしてssh エージェント wslヘルパー。指示に従えば、WSL と Windows 間で資格情報を共有する方法が簡単にわかります。うまく機能します。