Yeah, I'm not sure why you have the two in the first place. The first one is only missing the count for it; the group by has no usage without an aggregate such as count. The only thing I can think of what you meant that to do was to query for DISTINCT ip.
Code:
SELECT ip, count(*) AS total_visits
FROM keywords
GROUP BY ip
ORDER BY total_visits DESC
I'm pretty sure MySQL lets you order by an alias, but I'd have to test it out to be sure. If not, you can order by count() again.