Normally the only thing which will prevent a page from ranking is noindex tag. If you don't want to have it indexed just noindex it, if that page has been laready indexed, put the noindex tag and delete from index using GWT option.
Concerning the canonical tag thing, it will consolidate the seo value in one page but it won't prevent those page to appear in rankings, however you may have two cases:
- the two or more pages are identical. In that case google may accept the canonicalization and show always the original page.
- the two or more pages are slightly different, it's the case of paginated pages which are canonicalized using rel next/prev. In that sense the whole value will be consolidated in page 1 but then the page which will be shown in the rankings will be the one which responds to that query, for example if someone is looking for blue glass, google will return the page which shows blue glass listing if that's different from the first one.
Hope this may help you!