【问题标题】:Access Windows network drives inside powershell ssh session在 powershell ssh 会话中访问 Windows 网络驱动器
【发布时间】:2021-01-19 23:35:10
【问题描述】:

我正在尝试从 linux 机器远程自动执行 Windows 上的一些脚本。该脚本将读取共享驱动器上的一些文件,然后打印出一些输出。

问题

脚本位于C:\scripts\script.py,它将读取R:(映射自\\remoteFile

使用ssh user@windows01 "python C:\scripts\script.py" 执行脚本会导致FileNotFoundError: [Errno 2] No such file or directory: 'R:'

脚本在本地工作,当我将路径修改为本地路径并将文件移动到本地路径时也可以工作

预期结果

映射驱动器 R: 或远程路径 \\remoteFile 应该可以在 ssh 会话中访问

解决方法

在我的命令之前映射驱动器,即

ssh user@windows01 "net use R: \\\\remoteFile ${password} /user:user; python C:\scripts\script.py"

该解决方案有效但不是最佳的:我有很多脚本以不同的时间表运行,所以这意味着将这一行添加到所有作业中。

我尝试过的事情

  • 修改脚本以直接读取\\remoteFile,但该路径在 ssh 会话中也不存在
  • 我已阅读 github issue 并设置了 EnabledLInkedConnections,但在 ssh 会话中仍未找到该路径
  • 我已阅读 this issue,但它不考虑使用公钥的 ssh 会话
  • credSSP 可能是一个解决方案,但它需要在服务器/客户端进行更多设置,我不确定是否值得尝试(我听说 credSSP 也存在安全问题)

问题

有什么干净的方法可以读取 ssh 会话中的远程文件吗?脚本执行应完全自动化,因此不考虑任何需要交互式命令/手动输入的解决方案。

【问题讨论】:

    标签: windows powershell openssh


    【解决方案1】:

    它之所以能够工作,并允许您在本地映射驱动器,是因为您具有直接访问权限和这样做的权限。在远程访问的机器上,您无法访问共享的原因是因为良好的“ol kerberos double hop issue”。最简单的解决方案是在远程机器上本地获取该文件,而不是共享。然后运行本地文件。

    【讨论】:

    • 谢谢!这意味着我要么坚持当前的方法(在执行命令之前运行 net use),还是先使用某种 sftp 来获取文件?没有标准的 windows 方法来解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2014-08-29
    • 1970-01-01
    • 2012-05-25
    • 2020-05-06
    • 2015-04-23
    • 1970-01-01
    相关资源
    最近更新 更多