"The chance for Chris to be a starter was too much to pass up," Duhon's agent, Kevin Bradbury, told 1050 ESPN New York's Andrew Marchand.
Duhon had also been talking with the Orlando Magic. Bradbury said the Magic never offered Duhon a contract.
Bradbury said the Knicks have made it clear that Duhon could start, which could mean that Stephon Marbury's days with the Knicks are numbered. Marbury is in the final year of his contract.
The agreement was initially reported by The Sporting News.
"I am just excited, I am ready to get to work for the Knicks," said Duhon, according to the Sporting News. "It's a big stage, playing in New York. It's something every player in the NBA wants."
Duhon played the last four seasons with the Chicago Bulls. He averaged 5.8 points and 4 assists per game last season. He has averaged 6.9 points and 4.5 assists per game in his career.
The Orlando Sentinel reported Thursday that the Magic expected to offer Duhon a three-year deal worth up to $10 million.
"Chris could have shopped himself around more, but in the end, he wanted a fit where he felt comfortable and he knew what kind of opportunity he would be getting," Bradbury said. "He wasn't worried about trying to find more money on the market or anything like that. He wanted the right situation, and this just felt like the right situation."