在 127.0.0.53 喜欢的 systemd 的 DNS 似乎正在工作,除非我按名称查询本地机器。但是,如果我查询它们并专门指定本地 DNS 服务器(我的路由器),那么我会得到正确的答复。但是配置文件说它也使用路由器作为搜索地址。有什么想法吗?
我在戴尔笔记本电脑上运行 Ubuntu 18.04。
结果不正确:
$ nslookup web1
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find web1: SERVFAIL
Run Code Online (Sandbox Code Playgroud)
也失败
$ nslookup -i wlp3s0 web1
nslookup: couldn't get address for 'web1': not found
Run Code Online (Sandbox Code Playgroud)
正确结果:
$ nslookup web1 192.168.1.1
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: web1
Address: 192.168.1.107
Run Code Online (Sandbox Code Playgroud)
配置信息 systemd-resolve
$ systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp …Run Code Online (Sandbox Code Playgroud) 我有一个 PHP 工具,需要通过 SSH 访问我的一些服务器。这是一个仅供内部使用的应用程序,在与 Ubuntu 18.04 机器通信时它可以 100% 正常工作。
我开始将我的机器更新到 22.04,当我尝试使用 PHP 和 ssh2_connect() 打开 SSH 连接时,22.04 上的每台机器现在都会给出错误消息“无法交换加密密钥”。
当我在 CLI 中时,我能够使用安全密钥和用户进行 SSH,并尝试像 Web 服务器启动 ssh 一样进行访问。
sudo -u www-data ssh -i [path-to-private-key] [user]@[ip-address]
Run Code Online (Sandbox Code Playgroud)
我有一台运行 PHP 7.2 的服务器和一台运行 7.4 的服务器,两者都给出相同的错误,但仅在与 Ubuntu 22.04 机器对话时出现。
这是给我错误的命令:
$this->_CON = ssh2_connect($sshHost, $sshPort, [ 'hostkey' => 'ssh-dss,ssh-rsa' ]);
Run Code Online (Sandbox Code Playgroud)
这将建立连接,但当然不允许用户使用密钥:
$this->_CON = ssh2_connect($sshHost, $sshPort);
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
- - 更新 - -
好的,我刚刚将另一台服务器更新到 22.04,但 ssh2_connect 立即无法与该服务器通信。所以我确信这是 22.04 服务器的问题,而不是 php 服务器的问题。我只需要弄清楚哪个包发生了变化。也许某些配置文件导致密钥交换以不同的方式工作。
这仅通过 php ssh2_connect 进程发生。即使使用相同的密钥,也不会在命令行上直接使用 ssh 命令。