web-dev-qa-db-ja.com

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

通常、SSHエージェントのセットアップは数年に1回しか行わないため、この質問を思い出させるために作成しました。

では、Linuxのようなシェル環境の使用を想定して、WindowsでSSHエージェントをセットアップするにはどうすればよいでしょうか。

5
shillner

私の現在のセットアップ:

  • Windows 10 Pro
    • 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_SOCKおよびSSH_AGENT_PID
    2. ssh-addは、指定した秘密鍵をエージェントに追加します。エージェントは、最初に秘密鍵のパスフレーズを要求します。
    3. 上記の変数は、開始されたシェルプロセスに対してのみ設定されるため、ユーザーがシェルから開始されていない他のシェルおよび他のツールで使用できるように、それらをグローバルに設定する必要があります。これは、Windowsからsetxコマンドを使用して行うことができます。エージェントから取得した変数に従って変数を設定するだけです。

その後、すべての準備が整い、最初にシェルを起動するとすぐにエージェントが実行されて使用可能になります。エージェントがWindowsの起動時に確実に起動するようにするには、Windowsの自動起動にシェルランチャーを追加することもできます。

11
shillner

私にとってうまくいったのは、Oracle cygwin ssh setup [1]に従うことです。そこから、CygwinのインストールとSSHの構成に関心があります。このセットアップを使用して、あらゆる種類のQEがマシンに接続し、そこでテストを実行しています。 Linuxコマンドのほとんどを実行できるだけでなく、Windowsコマンドを使用することもできます。

基本的にWindowsのLinuxシェル:-)

乾杯、

マーティン

[1] https://docs.Oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC15

0
Shadowmak