无法使用公钥进行 ssh 连接

无法使用公钥进行 ssh 连接

我有两个 RH Linux 主机,所有东西都相同,称为 A 和 B。

我可以使用公钥从 A 顺利地 ssh 到 B,但我就是无法从 B 登录到 A(或者从我的桌面使用 putty 和 pageant 登录),因为系统会提示输入密码。似乎 A 肯定有些不同,但我搞不清楚是什么。

authorized_keys 文件和 .ssh 目录权限正确且 sshd_config 中的 PubkeyAuthentication 为“是”。

是否还有其他东西可能缺失或基础构建中可能已更改,从而导致这种情况发生?我已经反复检查上述内容并多次重新生成密钥。我还看到它在运行 ssh -v A 时尝试使用密钥,但失败了。

答案1

如果可以的话,您需要在服务器上调试此问题。如果您在服务器上具有 root 访问权限,请尝试成为 root,然后运行:

/path/to/sshd -ddd -p 1022

这将运行 SSH 服务器的一个实例,该实例将侦听端口 1022、接受一个连接并将调试信息打印到您的终端。照常运行您的客户端,但指定端口 1022 作为端口:

ssh -p 1022 user@A

服务器打印的调试信息有望清楚地说明您被拒绝的原因。

答案2

我可以使用公钥从 A 顺利地 ssh 到 B,但我根本无法从 B 登录到 A...而无需输入密码。

要从 X 到达 Y,X 的公钥必须位于 Y 的 authorized_keys 文件中

运行 ssh 命令从 A 到 B,需要输入密码,例如

$ssh user@host

然后按 Ctrl-C,这样您就知道您拥有正确的 ssh 命令,因此它会提示输入密码。

但这次,ssh改变ssh-copy-id

它会提示输入密码。输入密码。现在退出。

然后下次您通过 ssh 登录时,它就会自动登录。

为了使其工作你必须有 A 上的钥匙。

如果你还没有 A 上的密钥,则运行 $ssh-keygen

然后ssh-copy-id按照描述进行操作。

在从 A 连接到 B 时,这里提到的所有命令,例如 ssh、ssh-copy-id 或 ssh-keygen,都是从 A 运行的。

答案3

请检查 iptables 是否已配置为允许传入 ssh 访问

 iptables --list

它将列出现有的 iptable 规则

您可以使用以下命令仅允许来自特定网络的传入 SSH

iptables -A INPUT -i eth0 -p tcp -s 192.168.200.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

希望这可以帮助!

相关内容