Memo/Windows/10/WSL/wsl-ssh-agent

https://dexlab.net:443/pukiwiki/index.php?Memo/Windows/10/WSL/wsl-ssh-agent
 

wsl-ssh-agent: WSL環境でwindowsアプリからssh-agentと連携する

https://github.com/rupor-github/wsl-ssh-agent

  • Windows10 1803以降にはssh-agentが入っていて、ssh-addで秘密鍵を登録できる。
  • しかし、WSLからはWindows側のssh-agentにアクセスできない。それを解決する

古い Memo/Windows/10/WSL/ssh-agent-wsl と比べて

  • WSL2: 常駐プロセスは無いように見える。
  • WSL1: WSL側でプロセスを起動しなくなったので、起動が少し早い。Windows側でwsl-ssh-agent-gui.exeを常駐する必要がある。

インストール共通部分

  1. Windows側でssh-agentのサービスを起動する。PowerShellを管理者権限で実行
    Set-Service -Name ssh-agent -StartupType Automatic
    Start-Service -Name ssh-agent
    Get-Service -Name ssh-agent
    
    Status   Name               DisplayName
    ------   ----               -----------
    Running  ssh-agent          OpenSSH Authentication Agent
  2. releases からwsl-ssh-agent.7z をダウンロードして、windows側のドライブに展開
    • 例: C:\local\wsl-ssh-agent
  1. WSL1/2の手順へ
  2. WSLのterminalを開き直すか、shellを再起動
    exec $SHELL -l
  3. Windows側(PowerShell)で秘密鍵を登録してみる。
    # $HOME/.ssh/id_rsa が登録される
    ssh-add
    # 秘密鍵が登録されたか確認
    ssh-add -l
  4. WSL側で、秘密鍵が登録されているか確認
    ssh-add -l

WSL2の場合

  • WSL 2 compatibility
    • Workaroundとして、socat + npiperelay.exeを使う方法が書いてある
  • 環境:
    • Windows 10 Pro 2004
    • WSL2(Ubuntu 18.04 LTS)
  1. Ubuntuの場合、socatをインストール
    sudo apt update
    sudo apt -y install socat
  2. WSL上のLinuxに追加。Memo/Linux/Bash#a4d5a585 が設定済みであること。
    vim ~/.bash.d/wsl-ssh-agent.sh
    --
    export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
    ss -a | grep -q $SSH_AUTH_SOCK
    if [ $? -ne 0   ]; then
        rm -f $SSH_AUTH_SOCK
        ( setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"/mnt/c/local/wsl-ssh-agent/npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork & ) >/dev/null 2>&1
    fi
    --
    chmod +x ~/.bash.d/wsl-ssh-agent.sh

WSL1の場合

  • 環境
    • Windows 10 Pro 1909
    • WSL1(Ubuntu 18.04 LTS)
  1. Windows: で実行。タスクトレイに常駐する。自動起動したい場合は、スタートアップにショットカット(パラメータ付き)で登録する
    wsl-ssh-agent-gui.exe -socket c:\local\wsl-ssh-agent\ssh-agent.sock
  2. WSL上のLinuxに追加。Memo/Linux/Bash#a4d5a585 が設定済みであること。
echo 'export SSH_AUTH_SOCK=/mnt/c/local/wsl-ssh-agent/ssh-agent.sock' >> ~/.bash.d/wsl-ssh-agent.sh
chmod +x ~/.bash.d/wsl-ssh-agent.sh

アプリの対応


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-09-15 (火) 17:56:40 (43d)