【问题标题】:Run VSCode tasks in a single session在单个会话中运行 VSCode 任务
【发布时间】:2023-11-04 11:49:01
【问题描述】:

我想将我的本地部署命令迁移到 VSCode 任务。我需要以 root 身份运行它们。当我在终端中执行这些操作时,只要求我提供一次密码。

$ sudo echo hello                                                                                                                                                                                                                                                        
[sudo] password for pt12lol: 
hello
$ sudo echo hello                                                                                                                                                                                                                                                        
hello

不幸的是,当我配置了我的 VSCode 任务时:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Hello task",
            "type": "shell",
            "command": "sudo echo hello"
        }
    ]
}

我想它在单独的会话中运行每个任务,并且每次都要求我提供密码。

> Executing task: sudo echo hello <

[sudo] password for pt12lol: 
hello

Terminal will be reused by tasks, press any key to close it.

> Executing task: sudo echo hello <

[sudo] password for pt12lol: 
hello

Terminal will be reused by tasks, press any key to close it.

是否可以设置任务部署以保持上次会话并且不要求我输入密码?

【问题讨论】:

    标签: linux terminal visual-studio-code root sudo


    【解决方案1】:

    我也遇到了这个问题,this 问题帮助了我。在 Linux 中,您无法将密码显式传递给 sudo,但有一些解决方法。

    echo password | sudo -S command

    将使用-S 参数将password 传递到sudo。来自sudo man page

    -S -S (stdin) 选项使 sudo 从标准输入而不是终端设备读取密码。密码后面必须跟一个换行符。

    修改您的代码在我的机器上产生了预期的效果。

    {
        {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Hello task",
                "type": "shell",
                "command": "echo password | sudo -S echo hello"
            }
        ]
    }
    

    【讨论】:

    • 这样您就可以将解密后的密码保存在进程树或硬盘上。高度不安全。我不喜欢它。
    • 阅读手册页,我不认为sudo 允许其他方式。这对我来说很有效,因为我正在构建一个密码加密并不重要的远程开发机器。您的里程可能会有所不同:-)
    • 你也可以试试this。似乎每次登录会话只需要一次密码,但这是系统范围的。
    • 在没有解密密码的远程机器上工作对我来说特别重要,因为在大多数情况下,您不是唯一的服务器用户,因此使用这台机器的任何其他人都可以使用ps 列表读取您的密码,并且像你一样做事。
    • 我知道风险。我不确定您正在寻找的功能是否存在于sudo 中。查看我上一条评论中的链接答案以获得不同的方法。
    最近更新 更多