Skip to content

Instantly share code, notes, and snippets.

@fenying
Created August 6, 2025 02:59
Show Gist options
  • Save fenying/75f13102ba2cc79a4084b7870522bed7 to your computer and use it in GitHub Desktop.
Save fenying/75f13102ba2cc79a4084b7870522bed7 to your computer and use it in GitHub Desktop.
SSH Port Forward Mapping
ssh.map-port-to-local() {
local LOCAL_HOST=$SSH_MAP_LOCAL_HOST
local LOCAL_PORT=$SSH_MAP_LOCAL_PORT
if [[ -z "$SSH_MAP_REMOTE_SERVER" ]] || [[ -z "$SSH_MAP_REMOTE_PORT" ]]; then
echo "Usage: z.ssh.map-port-to-local"
echo " env export [email protected] [Required]"
echo " env export SSH_MAP_REMOTE_PORT=12345 [Required]"
echo " env export SSH_MAP_REMOTE_HOST=127.0.0.1 [Default: 127.0.0.1]"
echo " env export SSH_MAP_LOCAL_HOST=0.0.0.0 [Default: 127.0.0.1]"
echo " env export SSH_MAP_LOCAL_PORT=23456 [Default: \$SSH_MAP_REMOTE_PORT]"
echo " env export SSH_KEY_FILE=xxx.pem [Default: null]"
return 1
fi
if [[ -z "$LOCAL_HOST" ]]; then
LOCAL_HOST=127.0.0.1
fi
if [[ -z "$LOCAL_PORT" ]]; then
LOCAL_PORT=$SSH_MAP_REMOTE_PORT
fi
if [[ -z "$SSH_MAP_REMOTE_HOST" ]]; then
SSH_MAP_REMOTE_HOST=127.0.0.1
fi
if [[ ! -z "$SSH_KEY_FILE" ]]; then
SSH_KEY_FILE_ARGS="-i $SSH_KEY_FILE"
fi
echo "Mapping $SSH_MAP_REMOTE_HOST:$SSH_MAP_REMOTE_PORT on $SSH_MAP_REMOTE_SERVER [Remote] -> $LOCAL_HOST:$LOCAL_PORT [Local]"
ssh \
-o StrictHostKeyChecking=no \
-4 \
$SSH_KEY_FILE_ARGS \
$SSH_MAP_REMOTE_SERVER \
-N \
-L $LOCAL_HOST:$LOCAL_PORT:$SSH_MAP_REMOTE_HOST:$SSH_MAP_REMOTE_PORT
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment