Aluminum or pepper spray really works well if you spray it on the areas where he attacks the most. Spray a bit on the sofa (test it first on a hidden spot so you don't damage the fabric) and he'll start avoiding it because he hates the smell and taste. You have to reapply it from time to time, especially after you wash the sofa, but it's pretty effective.
What a lot of people don't try is combining this with a daily play session before those times when he normally attacks the furniture. If you tire him out properly with a toy, a laser, or a rope, he'll be calmer and less inclined to scratch. And yes, a proper scratching post helps, but the secret is placing it in a spot where he's already predisposed to scratch - if you put it by the window or in one of his favorite corners, it's much more likely to work than if you stick it in some random place.
There's one more thing: cover the sofa with a blanket made of rough fabric or even aluminum foil for a week or two. Cats hate the feeling and the noise, and they often give up. Once he loses the habit, you take it off and the spray keeps working as a long-term deterrent.