Predicting on real test set gives only very high probability for 1 for a very unbalanced data
In unbalanced scenarios such as this, often the probability estimates are skewed massively in favour of the majority class, but the model is still learning to assign lower probabilities to the minority class, so it can be a good idea to choose a threshold higher than 0.5 to determine your final classification. It would be a good idea to look at a precision-recall curve (implemented in scikit-learn) which considers all thresholds between 0 and 1 and plots the precision and recall against each other for each threshold. You should pick the threshold that gives the best trade-off for your problem.