ah ok now i understand the problem: all the TFBertXxx.from_pretrained methods are based on keras and thus look for checkpoints with a .h5 extension.
i think we can try using the load_tf_weights function instead (link 3):
from transformers import BertTokenizer, BertConfig, TFBertModel, load_tf_weights_in_bert

# load config
config = BertConfig.from_json_file("./bert_config.json")
# instantiate model from config
model = TFBertModel(config)
# load pretrained weights
load_tf_weights_in_bert(model, config, "./bert_model.ckpt.index")
# instantiate tokenizer
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
# returns tensor of shape [1, 8, hidden_dim]
model(**inputs).last_hidden_state

out of curiosity, why do you want to do things this way? is there a checkpoint missing on the Hub that you need?