The approaches came during an international tri-series also involving Sri Lanka and Zimbabwe in January 2018, and that year's Indian Premier League.
Shakib is the top all-rounder in the one-day international rankings and has played 338 matches for Bangladesh.
He was the third-highest run-scorer in the 2019 Cricket World Cup and hit two hundreds, including against England in Cardiff in the group stage.
One year of Shakib's ban is suspended and he will be able to return to the sport on 29 October 2020.
"Those who have supported me over the years I hope they, the fans, Bangladesh Cricket Board, the government, the journalists will continue to support me in my bad and good time," said Shakib after his ban was announced.
"If you continue your support, I am hopeful I will come back to cricket soon. I will be stronger and will perform my responsibilities with more sincerity."
Shakib told the anti-corruption unit of the International Cricket Council (ICC) he "did not act upon", "provide any information" or "receive any money or other reward" for the approaches.
He has been punished for failing to disclose "full details of any approaches or invitations received to engage in corrupt conduct", a statement from the governing body said.
"I am obviously extremely sad to have been banned from the game I love, but I completely accept my sanction for not reporting the approaches," said Shakib, who is also Bangladesh's Twenty20 captain.
Alex Marshall, the general manager of the ICC's anti-corruption unit, said: "Shakib Al Hasan is a highly experienced international cricketer. He has attended many education sessions and knows his obligations under the code.
"He should have reported each of these approaches."
Last week, Shakib led a strike by Bangladesh's players which was soon called off after the Bangladesh Cricket Board agreed to most of their demands for better pay and improved facilities.
He has been replaced as Test captain by Mominul Haque and as T20 skipper by Mahmudullah.