SSH接続時に実行しているシェルスクリプト
code:ssh.sh
set -x
source ./.env
rsync \
-avz ./ $HOST:$DIST \
--exclude '.env' \
--exclude '.git' \
--exclude '.ssh' \
--rsh "ssh -F ./.ssh/config"
ssh -F ./.ssh/config $HOST -t "cd ${DIST}; bash --login"
set +x
code:.env
HOST=hoge
DIST={接続時に移動したいディレクトリへのパス}
code:.ssh/config
Host hoge
HostName xxx.xxx.xxx.xxx
User yyyy
Port 22
ポイント
SSH接続&&カレントディレクトリ配下のファイル・ディレクトリをコピー
手元のmacOSでコードを書き、実行はUbuntuで行いたいため
SSH接続時に指定したリポジトリのパスに遷移してくれる
接続先のの ~/.bashrc とかで "$SSH_CLIENT" の値を見てcdさせるのも手だが、移動先を接続元で動的に差し込みたかったので今の形にした
ssh -F ./.ssh/config $HOST -t "cd ${DIST}; bash --login"
シングルクォーテーションにすると変数が展開されない
❌: ssh -F ./.ssh/config $HOST -t 'cd ${DIST}; bash --login'