Can you view what a specific peer/node is hosting?

Is it possible to see files that a node is hosting or is there something that explicitly prevents this?

For example, would there be a way from just the peer id get a list of hashes someone is hosting?

There is no direct way to do this, though you can try to datamine the dht (ipfs log tail events from dht system), that might be rather resource-intensive, and may not get you 100% coverage of the hosted content.

Thanks, I’m trying to determine how secure it is for me to start hosting files and the likelihood of someone “discovering” what I host. It sounds like it’s possible, but someone would have to spend a lot of resources to do that.

Is it possible for someone to “listen” in on hashes being requested? From my understanding, nodes will get requests for specific hashes and then try to route the requests to nodes that actually have the content. Is it possible for someone to capture those requested hashes? Could I somehow see the hashes that my node has been asked for?

It’s possible that someone discovers the content, you should treat the storage on ipfs to be as private as an open unauthenticated http server (everyone has access, people can listen for stuff (but data integrity is guaranteed in ipfs case)).

If you need more privacy for your data, you may want to checkout the private swarm feature:

It should be possible to see the requests in ipfs log tail, I’m not sure which subsystem.