私はかなり基本的なシナリオを持っています。私はこの目的のために専用のsshキーを作成し、それを私のリポジトリシークレットに追加しました。
コードはmaster
にプッシュされます
GitHubアクションは、echo "${{ secrets.SSH_KEY }}" > key
を実行することにより、ssh
を使用してサーバーにアップロードします。
その後、このキーを使用してサーバーに接続できます。 ssh -i key [email protected] lsb_release -a
問題は、何らかの理由でGitHubアクションがファイルに書き込めず、実際のシークレット値の代わりに文字***
をファイルに書き込むことです。したがって、明らかにサーバーに接続できません。
このシークレットを使用してSSHに接続するにはどうすればよいですか?ファイルを使用せずに接続する方法はありますか? GitHubアクションを使用してこの一般的なシナリオを実行した人は、いくつかの光を当てることができますか?
良い解決策は、gpgを使用してキーを暗号化し、それをリポジトリに追加して、サーバー上でパスフレーズを使用して復号化することです。パスフレーズはもちろんgithubプロジェクトシークレットとして保存する必要があります。
GitHubアクションは、この方法でファイルにシークレットを書き込むことができるはずです。星が表示される理由は、ログがフィルター処理されているためです。シークレットがログに記録される場合、ログでは3つのアスタリスクに置き換えられます。ログは公開されていることが多いため、これは秘密の偶発的な開示に対するセキュリティ対策です。
ただし、可能であれば、シークレットをログに書き込まないようにすることをお勧めします。次のようにコマンドを記述して、シークレットをログに書き込まないようにすることができます。
- run: 'echo "$SSH_KEY" > key'
Shell: bash
env:
SSH_KEY: ${{secrets.SSH_KEY}}
ログに表示されるのはecho "$SSH_KEY" > key
だけで、シークレットやアスタリスクはありません。
>
文字はYAMLにとって特別なので、ここでは引用符が必要です。
これでサーバーにログインできない場合は、別の問題が発生している可能性があります。この手法は、一般的なケースでシークレットを作成するために機能します。