Tagebuch von Spargel

最近zennに移行しましたhttps://zenn.dev/spargel

dockerでgithubに個人情報を隠したままssh接続(Windows10)

やりたいこと

docker起動時に,docker内からgithubssh接続をする. その際に,個人の情報が漏洩することを防ぐ.

結論

Dockerfileとdocker-compose内にそれぞれ以下を追加する

  RUN mkdir /root/.ssh
volumes:
    - ${USERPROFILE}\\.ssh_docker:/root/.ssh
    command: chmod 600 /root/.ssh/*

追記(2021/02/07)

DockerFileを使用しない場合はdocker-composeに下記のように書くといい

    command: 
      - mkdir /root/.ssh
      - chmod 600 /root/.ssh/*
    volumes:
      - ${USERPROFILE}\\.ssh_docker:/root/.ssh

背景

docker起動時にSSH接続する場合,秘密鍵をdockerにマウントする必要がある. windows10の場合,sshキーはC:\USERS\ユーザ名\.ssh\に格納さている. 個人用の場合は上記フォルダをそのままマウントしても問題ないが,Dockerfielごとgithubにpushした場合,ユーザ名が流出することが考えられる.(本名の場合だといろいろまずい).

解決策

windows10の環境変数を活用する. 例えば,'c:\USERS\ユーザ名\`は%USERPROFILE%となる. よって,C:\USERS\ユーザ名\.ssh\をマウントしたい場合は,${USERPROFILE}\\.sshとすれば良い.

ポイント

  • windowsでは階層は\(円マーク)であるが,docker内で扱うときは\\と二重にする.
  • %USERPROFILE%はdocker内では${USERPROFILE}となる.

その他の環境変数は下記参照

Windows 10 環境変数の一覧と既定値

 その他

Dockerfile内で,sshキーをマウントするフォルダを作成する

mkdir /root/.ssh/

sshキーをマウントした後,アクセス可能権限を与える

chmod 600 /root/.ssh/*