wsl 检查我们是否处于远程 ssh 会话中

wsl 检查我们是否处于远程 ssh 会话中

我正在使用远程 PC WSL(Ubuntu 20)作为开发服务器,作为工作流程的一部分,我想在 ssh 会话中构建应用程序时自动下载文件。

所以我需要找到一种方法来知道我是直接在机器中运行脚本(NodeJS)还是通过 ssh 连接远程运行脚本(NodeJS)。

有办法检查吗?

更多信息:

  • 我使用公钥/私钥进行身份验证
  • ssh 中允许的用户和我的本地用户名是一样的

答案1

以下检查在 WSL 中可能仍有效:

  • 如果其中一个变量SSH_CLIENT或被SSH_TTY定义
  • 如果登录 shell 的父进程名称是sshd

答案2

如果 ssh 服务器在 Windows 内部运行而不是 WSL 本身,则需要从 WSL 退出到 cmd 并进行检查。

这就是我想出的:

echo $(cmd.exe /c 'echo %SSH_CLIENT%' 2>/dev/null | sed $'s/\r//' | grep ' 22$')

相关内容