It is an option, and likely the one you want, but there are other options, so it's not a good idea to simply assume shared pointers is what you want without thinking about the actual ownership semantics.
If you use shared pointers in both places, that means if either place destroys it, it will continue existing and the other place can continue to use it. Both places will "own" the object they point to. This is certainly the simplest solution.
You can also use shared pointers in one place and weak pointers in another. That means if the first place destroys any, the second place will automatically lose it as well (in a safe and deterministic way, of course). Only the first place "owns" the objects.
It's also valid to use unique pointers in one place and raw pointers in another *if* you can guarantee the first place won't start destroying objects until after the second place is done using them. In the context of an entity system, this is almost certainly not the case, so you probably won't do this. But it's worth noting that raw pointers are not evil if they are used only to point, and not to own.
I'm sure Nexus and the others will have more to add to this, but that's what I know. In your case it probably boils down to whether you want the pipeline to be able to keep using objects the systems have already destroyed, and vice versa. I'm not familiar enough with entity systems to know if there's an obvious answer to that.