A senior Ukrainian official says this enabled Russian attacks and accuses him of "committing evil".
Elon Musk says he refused to give Kyiv access to his Starlink communications network over Crimea to avoid complicity in a "major act of war".
Kyiv had sent an emergency request to activate Starlink to Sevastopol, home to a major Russian navy port, he said.
His comments came after a book alleged he had switched off Starlink to thwart a drone attack on Russian ships.
A senior Ukrainian official says this enabled Russian attacks and accused him of "committing evil".
Russian naval vessels had since taken part in deadly attacks on civilians, he said.
"By not allowing Ukrainian drones to destroy part of the Russian military (!) fleet via Starlink interference, Elon Musk allowed this fleet to fire Kalibr missiles at Ukrainian cities," he said.
"Why do some people so desperately want to defend war criminals and their desire to commit murder? And do they now realize that they are committing evil and encouraging evil?" he added.
The row follows the release of a biography of the billionaire by Walter Isaacson which alleges that Mr Musk switched off Ukraine's access to Starlink because he feared that an ambush of Russia's naval fleet in Crimea could provoke a nuclear response from the Kremlin.
Ukraine targeted Russian ships in Sevastopol with submarine drones carrying explosives but they lost connection to Starlink and "washed ashore harmlessly", Mr Isaacson wrote.
Starlink terminals connect to SpaceX satellites in orbit and have been crucial for maintaining internet connectivity and communication in Ukraine as the conflict has disrupted the country infrastructure.
SpaceX is private, but this isnāt how public companies run? CEOs arenāt allowed to just make unilateral decisions without the approval of the board when they answer to shareholders and the SEC.