我有一堆计算机,我正尝试用我找到的某个随机路由器将它们连接起来。我已将所有计算机连接到路由器,并已为它们分配了固定 IP。我以前使用过 ssh,我认为使用 ssh 远程控制其他计算机会非常简单,但不知为何,我收到了“权限被拒绝,请重试”错误。
我尝试过调整防火墙,对 /.ssh/sshhd_config 进行各种配置,但都不起作用。我至少可以确定机器可以“看到”彼此,因为当我输入 IP 时,系统会要求我输入我所连接的计算机的用户名@机器名的密码。
我担心我的路由器配置可能有问题,或者我以某种方式提供了错误的静态 IP,但在这方面我不知道该怎么做。你们对可能出现的问题还有其他建议吗?
哦,是的,我正在使用 Ubuntu 20.04。
答案1
这很可能是权限问题。出于安全原因,以下是通常给用户带来问题的文件的必需/建议权限列表:
- 目录
~/.ssh
:0700
(drwx------
) - 文件
~/.ssh/authorized_keys
:0600
(-rw-------
) - 文件
~/.ssh/config
:0600
(-rw-------
) - 文件
~/.ssh/id_rsa
(或其他私钥):(0600
)-rw-------
有关详细信息,请参阅1。请检查并发表反馈。
如果这不起作用,您可以检查文件/etc/ssh/sshd_config
。如果有PasswordAuthentication no
,请将其更改为yes
。根据其他设置,只需注释它也可能有效。然后使用重新启动服务sudo service sshd restart
。您提到您对这个文件进行了更改,我不知道这些是哪些。
如果这不起作用,我建议您发布以下命令的输出。进一步尝试解释它,您可能会自己找到答案。并查看下面的链接,它们也可能会有所帮助。
$ cat /etc/ssh/sshd_config
$ ssh -v ...
$ ls -al ~/.ssh
$ ls -ald ~/.ssh
有关的:
答案2
就我的情况而言,我是全新安装的 Ubuntu 22.04.1,我尝试使用密码验证进行连接,但该行PasswordAuthentication yes
已被注释掉/etc/ssh/ssh_congig
。
我需要取消注释该行并重新启动 SSHLservice sshd resart
此外,我首先从 Windows 计算机使用 powershell 连接,它提示我接受指纹,我照做了。但是,一旦我使用ssh -v hostname@servername
powershell 连接,就会出现错误REMOTE HOST IDENTIFICATION HAS CHANGED!
。
解决方案是删除主机%userprofile%/.ssh/known_hosts
并重新接受指纹。