作为 root,我连接到远程主机以执行命令。只有“standarduser”具有适当的 id 文件和正确的 .ssh/config,所以我首先切换用户:
su standarduser -c 'ssh -x remotehost ./remotecommand'
Run Code Online (Sandbox Code Playgroud)
该命令工作正常,但尽管我使用了“-x”(禁用 X11-Forwarding)并在 中禁用了 X11Forwards /etc/ssh/ssh_config
,但我仍然收到错误消息:
X11 connection rejected because of wrong authentication.
Run Code Online (Sandbox Code Playgroud)
当我以“standarduser”身份登录时,我没有收到错误消息。
这很烦人,因为我想将该命令集成到 cron 作业文件中。我知道错误消息指的是 root 的 .XAuth 文件的错误身份验证,但我什至没有尝试通过 X11 进行连接。
为什么“ssh -x”没有禁用 X11 连接并抛出错误消息?
更新:该消息仅在我在屏幕内登录时显示,当在本地机器本身(无屏幕)上使用上述命令时,我没有收到错误消息,所以这对 cron 也应该没问题.
我也启动了相同的命令,-v
并且意外地得到了错误消息 FIRST,甚至在来自 SSH 的状态信息之前:
root@localhost:~# su standarduser -c 'ssh -x remotehost ./remotecommand'
X11 connection rejected because of wrong authentication.
OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013
Run Code Online (Sandbox Code Playgroud)
这让我想到了问题本身,不是ssh
抛出错误消息的原因,而是su
:
root@localhost:~# su standarduser -c …
Run Code Online (Sandbox Code Playgroud) 我有一个qemu
在 Windows 7上运行的实例,在没有打开终端的情况下运行。现在我想关闭名为MyMachineName的机器或向其添加 USB 设备。我需要一个可编写脚本的解决方案。Libvirt 不是解决方案,因为它对我的系统还有其他缺点。
我正在寻找一条神奇的线,例如:
qemu-monitor -connect=MyMachineName command="shutdown"
Run Code Online (Sandbox Code Playgroud)
我该怎么做?