rus*_*zec 6 windows ssh powershell openssh
我在Windows 10工作站上运行OpenSSH服务器,从Linux连接到该服务器,并使用该服务器在主机上运行 PowerShell 脚本,查询有关运行进程和管理系统等信息。
我知道,由于 OpenSSH服务存在于会话 0 隔离中,某些操作(例如远程启动主机上用户可见的 GUI 应用程序)受到限制。
我已经能够通过将我想要执行的任何内容安排为任务并立即运行该任务来自由地解决这个问题。sshdschtasks.exe
rundll32.exe user32.dll,LockWorkStationGet-Process logonui我尝试过这个名为 的第三方实用程序Logon.exe,但无济于事。我不相信它与 Windows 10 兼容。
我什至尝试使用SendKeys()PowerShell 在锁定屏幕上发送密码的击键,然后按 Enter,以及 AutoHotKey 脚本来执行相同的操作。虽然击键会导致锁屏唤醒,但这两种方法似乎都无法在密码输入字段中创建任何输入。
我找到了一条适合我的道路,但可能对其他人不起作用:
然后,编写解锁脚本,如下所示:
#!/bin/bash
vncdo -s 192.168.0.101 --password="vnc-password-foo-bar" key ctrl-alt-del
sleep 1s
vncdo -s 192.168.0.101 --password="vnc-password-foo-bar" type "windows-machine-password" key enter
Run Code Online (Sandbox Code Playgroud)
如果您需要通过 ssh 路由它,则创建一个隧道:
#!/bin/bash
ssh -L 4900:localhost:5900 192.168.0.101 &
vncdo -s localhost:4900 --password="vnc-password-foo-bar" key ctrl-alt-del
sleep 1s
vncdo -s localhost:4900 --password="vnc-password-foo-bar" type "windows-machine-password" key enter
kill -9 %
Run Code Online (Sandbox Code Playgroud)
如果您需要从 Windows 计算机运行这些命令,可以将这些命令转换为 powershell,或者您可以简单地在cygwin shell或 WSL Linux 容器内运行这些命令。
如果 IP 是动态的并且您可以在您的环境中使用nmap,您可以执行类似以下操作从计算机的 MAC 地址获取计算机的 IP:
ip=$(nmap -sP 192.168.0.0/24 >/dev/null && arp -an | grep -i '5c:26:0a:5e:dc:a0' | awk '{print $2}' | sed 's/[()]//g')
Run Code Online (Sandbox Code Playgroud)