It's a design issue. They should've used protected FETs, or a current limited driver.
Possibly you can replace what's on the board, but it will require some tools to do well.
As for fixing their shit externally -- yes, a fuse will work
BUT it must be faster than a "fuse" fuse.See, the transistor will die in perhaps 100 microseconds; after that, it's a short circuit, with fault current continuing to heat up both itself and the fuse. 10,000 microseconds later, the fuse finally melts open, suppressing a spark as it goes, and the fault is cleared.
If you could get a fuse fast enough, it would be fine, but I don't think you can get anything quite small enough to protect a 2A transistor.
So that leaves a challenge: either limit current to exactly 2A or less; or limit the fault duration to much less than 100us. Preferably both.
We can use resistance to limit current, but it's a crude instrument, wasteful. Example might be, if our load is nominally 100mA at 12V, we can use a (12V / 2A) = 6 ohm series resistor to limit fault current to 2A, while only wasting 6*100m = 600mV = 0.6V in normal operation. But I'm guessing you want to use a nominal load much closer to the limit, and that's where the resistor becomes wasteful.
Can we do better? Certainly! It's not even
hard to make an inline current limiting device. Unfortunately, it's also not trivial, or cheap.
Back in the day, there were current-regulating diodes: you put one in series, and at low currents, they just look like a small resistance, no big deal; going up, eventually the current flattens out; hence the name. They were only, whatever, a few to tens of mA each (available in graded ranges). You'd need zillions of them in parallel to limit the current as desired here. A start, but not a useful one.
A modern equivalent might use a depletion mode power transistor, with a resistor to set the current limit. This is basically a CRD all over again, but actually available, and a scalable solution. Trouble is, I can't tell you exactly which parts to use -- the resistor has to be calibrated for the desired current. And anyway, the device will get quite hot under fault conditions, and either has to be heatsinked to handle that continuously, or another protection circuit has to turn it off entirely to prevent failure. Back to square one, kind of.
So what might be the best solution is this:
Use the pins as logic levels to drive more substantial, protected switches. Basically start over, but doing it right. There may be drop-in modules available for this function, or you can build your own from parts, like these:
https://www.digikey.com/product-detail/en/on-semiconductor/NCV8405ADTRKG/NCV8405ADTRKGOSCT-ND/3195279You'll probably need a pull-up resistor on the input (I'm assuming the RGB drivers are open-drain type outputs), and a logic inverter, which can be another transistor (MMBT3904 say) and some resistors, or a proper logic inverter like 74HC3G14. It'll need probably 5V from the motherboard or PSU just to power those resistors really, and that's about it, tie the loads to the switch outputs and you're set.
These protected switches aren't at all indestructible, but they can put up with a lot. They're favorites in automotive designs -- great for driving lamps, LEDs, solenoids, motors, etc.
The datasheet explains how they work. They don't really limit current, most of them; so, they can heat up pretty
damn quickly under fault. There's a temperature sensor onboard, mere microns away -- the thermal shutdown can act fast enough to keep it from destruction. So it might be on for 100us, then waits some 10 or 100ms cooling down, then tries again, and so on. What you see from the outside is a load blipping pitifully as it keeps retrying. (This is a lot of thermal stress on the part, it probably won't keep doing this forever -- but it is a lot better than just failing instantly!)
Tim