The man, 61, lies on a hospital bed at the Jaffna Teaching Hospital with white bandages around both his thighs.
A doctor said he had been shot twice.
Too fearful to be publicly identified, the grey-bearded man told AFP the massacre happened on the evening of May 13 in Allaipiddy on the islet near the northern town of Jaffna.
"Around 8:30 the armed forces came and shot the people," he said softly through a translator.
"They had green-coloured T-shirts and black-coloured jeans," he said, admitting that he was only assuming the killers were from the military.
Refugees who have fled Allaipiddy for rebel-held Kilinochchi town have blamed the navy for the massacre, which happened two days after a rebel Tamil Tiger suicide attack killed 18 crewmen on a navy gunboat.
The rebel Liberation Tigers of Tamil Eelam (LTTE), who are fighting for a homeland for minority Tamils, have also blamed the navy for killing the Tamil civilians in an area where it said the guerrillas had no access.
The