The opening batsman will return to English county cricket for the first time since his stint with Somerset in 2005.
Smith will replace Rory Hamilton-Brown as the team's captain after agreeing terms on a three-year contract.
The 31-year-old said: "I am excited to be joining such a professional and talented team, during what will hopefully prove to be a rewarding and successful period for Surrey CCC.
"When you consider the ambition shown it was an easy decision for myself and my family and I would like to thank Surrey County Cricket Club and Cricket South Africa for giving me the opportunity to lead the side and make it possible."
Smith has scored over 8,000 Test runs and has captained the Proteas in the longer format 94 times.