连接本地主机端口22失败:拒绝连接

130

在我的本地机器上安装Hadoop时,我遇到了以下错误

ssh -vvv localhost 
OpenSSH_5.5p1, OpenSSL 1.0.0e-fips 6 Sep 2011 
debug1: Reading configuration data /etc/ssh/ssh_config    
debug1: Applying options for * 
debug2: ssh_connect: needpriv 0 
debug1: Connecting to localhost [127.0.0.1] port 22. 
debug1: connect to address 127.0.0.1 port 22: Connection refused 
ssh: connect to host localhost port 22: Connection refused

有人能帮我解决这个错误吗,而不是更改端口号?

31个回答

156
如果在Mac OSX上安装Hadoop,请确保在系统偏好设置下打开远程登录文件共享。这在我的电脑上起作用了。

Remote Login


2
FYI,这对我解决这个错误很有帮助(对于未来的用户),似乎与Hadoop无关。谢谢! - joedragons
应该被接受为答案 - Anonymous Duck

121
  1. 使用以下命令删除SSH:

    sudo apt-get remove openssh-client openssh-server
    
  2. 使用以下命令重新安装SSH:

    sudo apt-get install openssh-client openssh-server
    

它将解决您的问题。


3
尽管这个答案听起来很奇怪,但它甚至在22号端口上都可以完美地工作。 - user1613360
2
我认为原因是它之前没有被正确地安装。 - Divyang Shah
1
@patrick,删除进程是必要的,以防它被部分添加或处于不一致的阶段。 - Divyang Shah
1
只想说,在WSL上这个会搞乱你的SSH,你再也无法安装它了。 - Mike
2
这太荒谬了- 过了4个小时,只需要重新安装。我将写一篇文章。 - Leafyshark
显示剩余8条评论

40

你是否安装了sshd?你可以使用以下命令验证:

which ssh
which sshd

如果您需要详细信息,可以访问此链接


2
我尝试使用sudo apt-get install openssh-server命令,它开始要求hduser的密码,但我没有为该用户创建任何密码,我如何知道默认密码。 - Surya
我尝试了which ssh,which sshd,这给了我内部路径'/usr/bin/ssh',它们已经安装在我的机器上。 - Surya
3
SSH 是客户端,而 SSHD 则是服务器。要安装 sshd,请使用命令 sudo apt-get install openssh-server。 当您为 hduser 创建用户帐户时,必须已经设置了密码。请不要将其与在本地主机上从 hduser 帐户到其自身的无密码 SSH 设置的空白口令混淆。 - arun

29

尝试安装完整的SSH包:

sudo apt-get install ssh

我在Ubuntu上使用ssh命令时出现了与你相同的错误。在完整安装后,所有问题都得到了解决。


1
这对我解决了问题,正是我的情况(我已经安装并运行了sshd,开箱即用)。在Ubuntu 19.04上。 - Jonathan Hartley
1
在Ubuntu 20.04中工作。情况相同。 - arthropod
点赞。之前我在Ubuntu 22.04上安装了sudo apt-get install openssh-client,但是出现了错误。现在通过安装完整的SSH包,错误已经消失了。 - bim

21

我使用 Mac,以下方法对我有效:

打开“系统偏好设置”,然后搜索“共享”。

选择“远程登录”,确保它已打开,并记得添加所需的用户。 输入图像描述

参考资料


我在启动Hadoop时遇到了问题,但是我使用了这个解决方案来修复它。 - Arjun Gautam

20

我已经尝试了上面的所有建议,但它们都没有起作用。然后我重启了ssh服务,它就可以工作了。这是我所做的:

service sshd restart

然后我重新做

ssh localhost

现在我可以连接到我的本地主机。希望这有帮助。


ssh: connect to host localhost port 22: Connection refused - bim

13

我使用了:

sudo service ssh start

那么:

ssh localhost

13

检查此端口是否开放。可能您的SSH守护程序没有运行。请检查sshd是否在运行。如果没有运行,请启动它。


我尝试使用sudo apt-get install openssh-server命令,它开始要求输入hduser的密码,但我没有为该用户创建任何密码,我如何知道hduser的默认密码? - Surya
1
不,它正在要求输入您在安装Linux系统时的root / sudo用户密码。 - abhinav
[root@localhost .ssh]# which ssh /usr/bin/ssh [root@localhost .ssh]# which sshd /usr/sbin/sshd,我的机器上已经安装了ssh - Surya
1
然后运行sshd守护进程 /bin/etc/init.d sshd start。 - abhinav
sshd重新执行需要使用绝对路径执行,这是来自路径的消息。 - Surya
任何支持如何解决这个问题的方法 - Surya

8
如果您重新启动服务,那么它将起作用。
$ service sshd restart

那么请检查。
$ ssh localhost

它将会工作。


7
请确保 /etc/hosts.allow 文件包含以下内容:
ssh:ALL:allow
sshd:ALL:allow

或者

ssh:localhost:allow
sshd:localhost:allow

或者 - 其他变体

ssh:{host1,host2,host3...}:allow
sshd{host1,host2,host3...}:allow

请确保文件的第一行不以ALL:ALL:DENY开头。

如果是这样,任何端口上的通信都将被禁止,主机将无法与其他任何设备通信。


完美的答案! - Kanuj Bhatnagar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接