trap '' INT é destinado a ignorar SIGINTs para o shell e todos os seus filhos.
Mas olhando as saídas strace em scp , parece que scp instala seu próprio manipulador SIGINT que cancela o SIG_IGN acima.
A única maneira de impedir que ele obtenha o SIGINT seria executá-lo em um grupo de processos diferente como:
perl -MPOSIX -e 'setpgid 0,0; exec @ARGV' scp...
ou
(set -m; scp ... & wait)
ou diga ao tty driver para parar de enviar SIGINT com o Ctrl-C (como stty -isig , ou stty intr '' para ^C sozinho), embora você queira restaurar as configurações depois:
saved=$(stty -g)
stty intr ''
scp ...
stty "$saved"