はじめに
開発中のWebアプリで、CI/CDのコードをリファクタしていました。
その中で、セキュリティに関わる改善も行ったので、メモとして残しておきます。
問題
GitHub Actions で EC2 にデプロイする際、秘密鍵をファイルに書き出していました。
「これってセキュリティ的にどうなのかな?」「もっとスマートにできないのかな?」
ということで、リファクタをしてみます。
# ❌Before
- name: Write key
run: |
echo "${{ secrets.SSH_PRIVATE_KEY }}" > key.pem
chmod 600 key.pem
対策
秘密鍵を ssh-agent に登録することで、物理的にファイルを生成したり権限を調整する必要がなくなります。
また、以降の ssh や git の操作は自動的にこの鍵を利用してくれるため、設定もシンプルになります。
# ✅After
- name: Setup SSH
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
テスト
ワークフローの実行結果がグリーンであることを確認します。

さいごに
デプロイワークフローで秘密鍵を使うなら、webfactory/ssh-agent を使うのが安全でシンプルです。
GitHub - webfactory/ssh-agent: GitHub Action to setup `ssh-agent` with a private key
GitHub Action to setup `ssh-agent` with a private key - webfactory/ssh-agent