配置 SSH 服务器,使其在本地主机连接时不询问密钥或密码

配置 SSH 服务器,使其在本地主机连接时不询问密钥或密码

我正在尝试解决一个奇怪的案例,所以请耐心等待。

我想使用 [不要喘气] 图形 Windows 工具(如 WinSCP、PuTTY 等)OpenSSH 密钥。这些工具不支持签名密钥。但它们确实支持大量的“转发”和“代理”方法。

我可以为他们设置一个“本地代理”,用于实际执行 OpenSSH 命令签名的密钥发送到同一台服务器并建立隧道:本地端口2222转发到服务器的127.0.0.1:22

太好了,现在 Windows 工具可以ssh/scp通过已认证隧道...但他们尝试做的第一件事是:打开 ssh 并进行身份验证(并且他们无法传递签名的密钥...)。

那么,既然我已经在隧道上进行了身份验证,我可以将远程计算机的 ssh 服务器配置为不是如果通过 127.0.0.1:22 尝试连接,则不询问密码或密钥?

请注意,我说的不是“跳转”服务器以到达“远程”。我只有 1 个“远程”服务器。

总结:

在我的 Ubuntu 服务器上,我想要执行的操作不会被要求输入密钥或密码,但前提是请求来自 127.0.0.1ssh [email protected]

答案1

您可以通过添加以下行来为用户设置一个空密码,并允许从本地主机使用空密码进行身份验证回到顶部文件 /etc/ssh/sshd_config

Match Address 127.0.0.*
  PermitEmptyPasswords yes

使 OpenSSH 接受“无”身份验证

PermitEmptyPasswords可用的身份验证方法有:“gssapi-with-mic”、“hostbased”、“keyboard-interactive”、“none”(启用时用于访问无密码账户)、“password”和“publickey”。

WinSCP 和 PuTTY 会自动尝试“无”身份验证。因此它们甚至不应该要求输入(空)密码。


感谢@pa4080 建议简化我的解决方案。

答案2

匹配地址 127.0.0.* PermitEmptyPasswords 是

将其放在我的 sshd 配置文件的顶部会导致我的 OpenSSH 服务器崩溃(Ubuntu 19.04)并且重启后无法恢复。将其放在文件底部是指定的方法(请参阅文件底部注释掉的部分)。

引自以下参考文献:

如果满足 Match 行上的所有条件,则以下几行上的关键字将覆盖配置文件全局部分中设置的关键字,直到出现另一个 Match 行或文件末尾。<<

参考: https://man.openbsd.org/sshd_config#AuthenticationMethods

相关内容