📚
DockerコンテナからMacのSSHエージェントを利用する
Mac上のソケットを $SSH_AUTH_SOCK
通じてコンテナに渡しても動かない。(以前は動いていたような気がするが動かなくなったので調べた)
結論を言うと
/run/host-services/ssh-auth.sock
を使えば良い
デフォルトのSSHエージェントを使う
compose.yaml
version: '3'
services:
server:
build:
context: ./
dockerfile: ./docker/server/Dockerfile
command: sleep infinity
volumes:
- /run/host-services/ssh-auth.sock:/tmp/agent.sock
environment:
- SSH_AUTH_SOCK=/tmp/agent.sock
docker/server/Dockerfile
FROM debian:stable-slim
RUN apt-get update
RUN apt-get install -y --no-install-recommends openssh-client
RUN mkdir -p -m 0700 /root/.ssh && ssh-keyscan github.com >> /root/.ssh/known_hosts
コンテナ上では /tmp/agent.sock
経由で参照できる
# mount | grep sock
tmpfs on /tmp/agent.sock type tmpfs (rw,relatime,size=1636068k,mode=755)
コンテナ内でrootユーザー以外を使っているとソケットファイルの権限も修正する必要があるかもしれない
1PasswordのSSHエージェントを使う
上記の記事の Configure SSH_AUTH_SOCK globally for every client
を事前にやっておけば デフォルトのSSHエージェントを使う
と同じ compose.yaml
で動くようになる
この設定を入れておかないとDocker起動時に1Passwordではない方のSSHエージェントを参照してしまう
Discussion