为什么会出现“端口22:连接被拒绝”错误?


70

我正在

port 22: Connection refused 

连接到服务器时出错。

我同时安装了openssh客户端和服务器,并且它们正在运行。但是仍然有一个错误。请帮忙。


2
只是为了澄清一下,服务器上是否安装了openssh服务器?
凯文(

检查ssh是否在端口22上运行,以及是否有防火墙规则阻止该端口。
Manula Waidyanatha

1
据我介绍,请配置防火墙,使其允许ssh(端口22),该端口当前已被防火墙阻止。
Ketan Patel 2012年


这也可能是由于暂时的网络丢失而发生的。因此,请检查您的互联网连接。
user648610

Answers:


78

我经历了这个问题,终于得到了适当的答案。

sudo apt-get update
sudo apt-get install openssh-server
sudo ufw allow 22

然后进入raspi-config终端窗口并启用ssh。

这将允许端口22用于sshd。


这里与@SDsolar相同的问题
Nadav B,

@Nadiv,我还必须使用raspi-config启用ssh。答案已被编辑以反映这一点。
SDsolar

在两台计算机上执行了前三行,现在文件已成功传输。为什么Ubuntu在默认情况下没有安装或启用这些功能?该connection refused错误是如此神秘,我不知道这是否是防火墙问题,用户名问题,IP地址问题等。非常令人沮丧。
哈特菲德

sudo ufw allow 22工作一次。再次开始出现错误。
vineeshvs

32

在服务器上时,检查以确保sshd实际上正在运行,并且正在侦听端口22:

$ sudo netstat -anp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1538/sshd       
tcp6       0      0 :::22                   :::*                    LISTEN      1538/sshd       

如果没有得到结果,或者它们没有显示出您正在监听tcp 0.0.0.0:22,请解决此问题。

如果您确实显示sshd正在运行并且正在侦听tcp端口22,请检查以确保没有防火墙规则受到阻碍。同样,在服务器上:

$ sudo iptables -L | grep ssh
DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh 

或者,

$ sudo ufw verbose
Status: active

To                         Action      From
--                         ------      ----
22                         DENY        Anywhere
22/tcp                     DENY        Anywhere

如果确实看到上述规则之一,则需要解决该问题。

如果您没有看到任何防火墙规则,并且确实看到服务器上正在运行该服务,那么该检查工作站及其连接的网络了。您可以连接到其他服务器吗?您可以ping您自己的接口或环回地址吗?等等。


1
以及是否可以连接到其他服务器?
opensourcechris 2013年

2
嘿,谢谢您的回答,我的不是22号端口,而是2222端口。您说过,解决此问题,但是如何?
Yogesh Darji's

我的没有任何结果。
SDsolar

使用以下命令修复该问题:(sudo ufw allow 22或无论您使用的端口是什么)
John D

netstat已 弃用(默认情况下未安装在较新版本的Ubuntu上- 找不到命令'netstat',但可以使用...进行安装)。也许更新iproute2
Peter Mortensen

14

尝试这个

sudo apt-get remove openssh-client openssh-server

接着

sudo apt-get install openssh-client openssh-server

它对我有用:)

可能不是最正统的解决方案... :)


3
使用dpkg-reconfigure代替卸载/重新安装解决方案可能更容易使用
Stephen Michael Kellat 2014年

1
我不得不使用apt-get purge openssh-server(而不是remove)来使其工作。
11101101b

6

安装Raspbian后遇到相同的问题。对我有用的解决方案:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

如果这行得通,那么您之前必须先更改sshd-config。
guntbert '16

我在尝试设置ssh时在Raspbian上编辑了sshd_config。这个解决方案对我有用。
斯科特(Scott)

+1。唯一有效的解决方案!
Nadav B '18 -4-29

1

以下命令对我有用:

cd /root/.ssh
vi known_hosts

现在删除该文件中的所有内容,然后在终端上输入:

service sshd restart

来源:SSH-拒绝连接


对我来说类似的问题,但是我用清除了我的known_hosts ssh-keygen -f "/home/MYUSER/.ssh/known_hosts" -R MYHOST,代替了我尝试连接的linux用户和远程主机
Chris

1

这也可能为您解决。尝试将端口22从您的传出IP地址转发到同一端口上的本地IP。为我工作,允许我SSH到远程ubuntu计算机。


0

就我而言,静态IP是错误的。通过ping <my_ip>切换服务器后发现。即使服务器关闭,它仍然可以ping通。更改IP解决了该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.