在 ubuntu 14.04 上我安装了 openssh,更改了 ssh 端口。我可以在局域网内登录,没有任何问题,但无法从外部访问。
我还:允许它通过防火墙并在我的 linksys 路由器上设置端口转发
每当我登录时,我都会收到错误(我已替换 # 而不是数字):
ssh: connect to host #.#.#.# port #: Can't assign requested address
我还能检查什么,可能出了什么问题?请帮忙。
答案1
对我来说,它有助于使用针对 ssh 的密钥来使用 IPv4 而不是 IPv6
ssh -4 ....
答案2
可能有不同的原因:
首先,我假设您的 ssh 服务器正在侦听正确的 IP/接口,无论如何,确保它的简单方法是在 ssh 服务器中键入:
netstat -putan |grep ssh
或取决于您的操作系统类型/版本:
ss -putan |grep ssh
如果在正确的接口中侦听,还请检查您的 SSH 服务器是否在 tcp、tcp6 或两者中侦听。
有时,如果您同时侦听 tcp 和 tcp6(这意味着您将侦听 IPv4 和 IPv6),可能会给您带来问题...您只能通过编辑 ssh 配置文件来侦听 IPv4/etc/ssh/sshd_config并添加/编辑该值:
AddressFamily inet
进行此更改后,您必须重新启动 SSH 服务器。
即使在这种情况下您无法通过 SSH 访问,我也建议 ping 目标 IP。如果没有收到响应,请检查双方的 IP/掩码以及路由表。可以通过以下命令检查路由表:
ip route
答案3
您可以将此设置为客户端选项以停止使用 IPv6。
~/.ssh/config
Host *
AddressFamily inet