By default Commands are only executed by authoritative objects (only objects that you own), you need to add "requireAuthority" and set it as false on Command attribute.
[Command(requiresAuthority = false, channel = Channels.Reliable)] I like to put my commands and RPC's in the reliable channel if you are using a transport that has unreliable and reliable. Not sure if this is still needed though, it's been a while.