I hope this is not homework. Some suggestions that I could quickly come up with are:
Use "use strict;" and "use warnings;" in the code (atleast during development).
Minor nitpick: Use a better named variable than "$errorstate". Using "$errorstate = 1" to indicate that valid sshport was input is confusing. I would have used a name like "$isvalidport", etc.
Instead of reading in the port value from <STDIN>, pass it as a cmdline argument.
Port numbers are limited to 65535 max. So, a value larger than that should be treated as invalid data.
Instead of using s/.../.../ to modify $_, why not print the new line "Port $sshport" to SSHD_CONFIG_NEW directly? I feel the substition operation is not required. The current print statement can be moved inside an else block.
Please close the opened file handles before calling rename(...)
You should check the return status of the rename(...) command.