Is there a way to only execute ForceCommand if it is a SSH session and not a SFTP session.
Não.
Or a way to check if it is a SFTP session in my bash script.
É para isso que o $SSH_ORIGINAL_COMMAND
é. Você deve ser capaz de diferenciar usando isso se o comando for SFTP ou não
NOTE: My
.bash_profile
has a command with output. If I would disable that output it would work again.
Esse é o problema que está quebrando o protocolo SFTP. Você não deve gerar nenhuma saída se o shell não for interativo:
if [ "$PS1" ]; then
# generate output
fi