I don’t have a lot of experience with this issue in Johnson or Evenrude motors but it is a common fail point in older Mercurys.
What I have done, helps if you have a metal lathe, is turn the seal surface to get it clean and relatively smooth. This is a hardened surface so you will want to go slow. Then drill and ream a piece of stainless tubing so your ID is 2-3 thousands undersize. Heat the tubing a little with a torch and drive it onto the shaft then turn and polish it to the original size. If there are notches or holes in the shaft that come into play You need to take measurements and make reference marks so you can locate them afterward.
If your shaft is not corroded or worn too much You might be able to put it in a lathe and just polish it with some fine sandpaper and crocus cloth. I would also look at cross referencing your seal and replacing it with one that has a double or triple lip.