刘邦听了刘敬的话骂刘敬道:“齐国孬种!凭着两片嘴捞得官做,现在竟敢胡言乱语阻碍我的大军。”就用镣铐把刘敬拘禁起来押在广武县。
高帝率军前往,到了平城,匈奴果然出奇兵把刘邦围困在白登山上,被围困了七天后在陈平的奇计帮助下才得以解围,刘邦回到广武县,便赦免了刘敬,对刘敬说:“我不听您的意见,因而在平城遭到围困,我已经把前面那十来批出使匈奴说匈奴可以攻打的人都斩首了。”于是,赏赐刘敬食邑二千户,封为关内侯,称作建信侯。
刘邦撤出平城返回朝廷,韩王信逃入匈奴,冒顿是匈奴的一代雄主,军队强大,勇士有三十万,屡次侵扰北部边境。刘邦对这种情况很忧虑,就问刘敬对策,刘敬说:“汉朝天下刚刚平定,士兵们被兵火搞得疲惫不堪,对匈奴是不能用武力制服的。冒顿杀了他的父亲自己做了君主,又把他父亲的许多姬妾作自己的妻子,他凭武力树威势,是不能用仁义道德说服的。只能够从长计议让他的子孙后代臣服汉朝了,然而又怕陛下不能办到。”
刘邦说:“果真可行的话,为什么不能办!只是该怎么办呢?”刘敬回答说:“陛下如果能把大公主嫁给冒顿作妻子,给他送上丰厚的礼物,他知道是汉帝皇后生的女儿又送来丰厚的礼物,粗野的外族人一定爱慕而把大公主作正妻,生下的儿子必定是太子,将来接替君位。为什么要这样办?因为匈奴贪图汉朝的丰厚财礼。陛下拿一年四季汉朝多余而匈奴少有的东西多次抚问赠送,顺便派能言善辩的的人用礼节来开导启发他。冒顿在位,当然是汉朝的女婿;他死了,他汉朝外孙就是君主。哪曾听说外孙子敢同外祖父分庭抗礼的呢?军队可以不出战便使匈奴逐渐臣服了。如果陛下不能派公主去,而让皇族女子或是嫔妃假冒公主,他也会知道,就不肯尊敬亲近她,那样就没什么好处了。”刘邦听后说:“好的。”便要送鲁元公主去匈奴。
吕后得知后日夜哭哭啼啼,对刘邦说:“我只有太子和一个女儿,怎么忍心把她抛掉远嫁匈奴去!”刘邦终究不能派出鲁元公主,便找了个宫女以公主的名义,嫁给冒顿君主作妻子,派遣刘敬前往与匈奴订立议和联姻盟约。
刘敬从匈奴回来,便称说“匈奴在河套的白羊、楼烦两个部落,离长安最近的只有