私は通常、SSH エージェントのセットアップを数年に 1 回しか行わないため、この質問を自分へのリマインダーとして作成しました。
では、Linux のようなシェル環境の使用を前提として、Windows で SSH エージェントを設定するにはどうすればよいでしょうか?
答え1
現在の設定:
- ウィンドウズ10プロ
- setx コマンドを提供する古いバージョンの Windows でも動作するはずです (Win7)
- バブン貝(zsh)
- Cygwinをベースにしている
私がやったこと:
新しいシェルを起動するたびに実行されるように、起動コマンドを .zshrc ファイルに追加することにしました。コマンドは次のとおりです。
# startup of the ssh-agent
AGENT_PID=$(pgrep -x ssh-agent)
if [ $? -ne 0 ]; then
echo "~/.zshrc: Starting SSH Agent!"
eval `ssh-agent` && ssh-add ~/.ssh/id_rsa
setx SSH_AUTH_SOCK $SSH_AUTH_SOCK
setx SSH_AGENT_PID $SSH_AGENT_PID
echo "~/.zshrc: SSH Agent running (PID: $SSH_AGENT_PID)"
else
echo "~/.zshrc: SSH Agent already running (PID: $AGENT_PID)"
fi
- pgrep コマンドは実行中の SSH エージェントを検索します。実行中のエージェントがある場合は、プロセス ID を出力し、別のエージェントの起動をスキップします。
- 何も見つからなかった場合、エージェントが起動され、環境変数がエクスポートされます。
eval `ssh-agent`
エージェントを起動し、環境変数を設定する出力を評価しますSSH_AUTH_SOCK
。SSH_AGENT_PID
ssh-add
指定された秘密鍵をエージェントに追加し、最初に秘密鍵のパスフレーズの入力を求めます。- 上記の変数は、開始されたシェル プロセスに対してのみ設定されるため、ユーザーがシェルから開始されていない他のシェルや他のツールを使用できるようにするには、変数をグローバルに設定する必要があります。これは、Windows の setx コマンドを使用して実行できます。エージェントから取得した変数に従って変数を設定するだけです。
その後、すべての設定が完了し、シェルを初めて起動するとすぐにエージェントが実行され、使用できるようになります。エージェントが Windows の起動時に起動するようにするには、シェル ランチャーを Windows の自動起動に追加することもできます。
答え2
私の場合は、Oracle cygwin ssh セットアップ [1] に従うことでうまくいきました。そこから、Cygwin をインストールし、SSH を構成することに興味があります。私は、あらゆる種類の QE でこのセットアップを使用して、マシンに接続し、そこでテストを実行しています。ほとんどの Linux コマンドを実行できるだけでなく、Windows コマンドも使用できるので、とても便利です。
基本的には Windows の Linux シェルです :-)
乾杯、
マーティン
[1]https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC150