地方でリモートワーク

リモートワーク、プログラミング、エンジニア、地方

Omarchy(Arch Linux)でDevContainerを使うときにSSH Forwardingする方法

Omarchy(Arch Linux)でSSH Port Forwardingするときにはまったのでメモ。

DevContainerでKamalを使ってデプロイしているのですが、ホストのSSH Forwardingが必要です。

VSCodeはホストでSSH Agentを立ち上げておけば、SSHエージェントを自動で転送してくれます。

つまりBashであれば~/.bash_profileなどに次のようにスクリプトを記述しておけば、

  • ssh agentの起動
  • キーの追加

を自動で行ってくれます。

if [ -z "$SSH_AUTH_SOCK" ]; then
   # Check for a currently running instance of the agent
   RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
   if [ "$RUNNING_AGENT" = "0" ]; then
        # Launch a new instance of the agent
        ssh-agent -s &> $HOME/.ssh/ssh-agent
   fi
   eval `cat $HOME/.ssh/ssh-agent` > /dev/null
   ssh-add 2> /dev/null
fi

しかし、Omarchy(Arch Linux)の場合は、DevContainerでSSH agentを転送してくれるものの、秘密鍵が見つかりませんでした。

Arch Linuxの場合SSH_AGENT_SOCKにSSH_AUTH_SOCKの値を設定する必要があります。

つまり上記のスクリプトを次のように修正しましょう。

if [ -z "$SSH_AUTH_SOCK" ]; then
   # Check for a currently running instance of the agent
   RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
   if [ "$RUNNING_AGENT" = "0" ]; then
        # Launch a new instance of the agent
        ssh-agent -s &> $HOME/.ssh/ssh-agent
   fi
   eval `cat $HOME/.ssh/ssh-agent` > /dev/null
   ssh-add 2> /dev/null
fi
# 以下を追加
export SSH_AGENT_SOCK=$SSH_AUTH_SOCK

これでSSH Agent転送かつ秘密鍵も追加されるようになりました。