Levenshtein Neighbours
05AB1E,  11 10  6 bytes
-4 thanks to Grimy !! (square first rather than looking for squares saves 3; use 10^n saves 1)
°Lnʒ.L

Takes an integer, outputs a, possibly empty, list
Try it online! - This is crazy-slow due to the °, so no point trying it even for 9.
Or Try a slightly faster version - This one adds eight instead with 8+ then uses the same approach.
How?
°Lnʒ.L - f(integer)    stack = n
°      - push 10^n             10^n
 L     - range                 [1,2,3,...,10^n]
  n    - square                [1,4,9,...,10^2n]
   ʒ   - filter keep if == 1:
    .L -   Levenshtein distance