cygwin を使用した Windows での SSH エージェントのセットアップ

cygwin を使用した Windows での SSH エージェントのセットアップ

私は通常、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
  1. pgrep コマンドは実行中の SSH エージェントを検索します。実行中のエージェントがある場合は、プロセス ID を出力し、別のエージェントの起動をスキップします。
  2. 何も見つからなかった場合、エージェントが起動され、環境変数がエクスポートされます。
    1. eval `ssh-agent`エージェントを起動し、環境変数を設定する出力を評価しますSSH_AUTH_SOCKSSH_AGENT_PID
    2. ssh-add指定された秘密鍵をエージェントに追加し、最初に秘密鍵のパスフレーズの入力を求めます。
    3. 上記の変数は、開始されたシェル プロセスに対してのみ設定されるため、ユーザーがシェルから開始されていない他のシェルや他のツールを使用できるようにするには、変数をグローバルに設定する必要があります。これは、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

関連情報