🔒
SSH秘密鍵のパスフレーズ自動入力
はじめに
パスフレーズ付の秘密鍵を使って SSH する作業を自動化したい場合に、パスフレーズを自動入力する必要がある。
例えば、Gitlab CI や GitHub Actions を使って、成果物をサーバーに配置したい場合等が考えられる。
準備
以下を準備してください。
- SSH 秘密鍵を環境変数
SSH_PRIVATE_KEY
に設定 - 上記秘密鍵のパスフレーズを環境変数
SSH_PASSPHRASE
に設定 -
ssh
をインストールしていること
手順
eval $(ssh-agent -s)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo -e "#!/bin/sh\n\necho ${SSH_PASSPHRASE}" > /etc/ssh/passphrase
chmod 755 /etc/ssh/passphrase
echo "${SSH_PRIVATE_KEY}" | tr -d '\r' | DISPLAY=None SSH_ASKPASS=/etc/ssh/passphrase SSH_ASKPASS_REQUIRE=prefer ssh-add -
ssh-keyscan "${SERVER_HOST}" >> ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
# 任意のSSHを実行できる
ssh ubuntu@"${SERVER_HOST}" "hostname"
scp -r dist ubuntu@"${SERVER_HOST}":~
Discussion