首页 > 解决方案 > 在 Linux 上运行的 ASP.NET Core 5 Web 应用程序 - 以与 www-data 不同的用户身份运行 ssh 命令

问题描述

我有一个在 Linux (Apache) 上运行的 ASP.NET Core 5 Web 应用程序,它通常运行良好。我希望它能够更改某些 Linux 用户的密码。基本上,登录到 Web 应用程序的用户可以更改他们用于 SFTP 的相应 Linux 密码。

我可以从 Web 应用程序运行 ssh/bash 命令,但它们是使用用户 www-data 运行的

我不确定这样做的最佳方法是什么:

  1. 尝试以具有 sudo 权限的用户身份一起启动一个新的 SSH 会话。(我不知道该怎么做。
  2. 将 sudo 与 www-data 用户一起使用(似乎不太安全,因为它增加了使用 www-data 用户的任何其他内容的权限)。

只要有 root 权限,运行这样的命令就可以更改用户的密码:

echo -e "changeme2\nchangeme2" | passwd testuser1

感谢您的任何建议。

标签: asp.net-core.net-5dotnet-linux

解决方案


谢谢@feihoa,我最终使用 SSH.NET 创建了一个到 localhost 的 SSH 会话并做我需要做的事情。

public void SetLinuxPassword()
{
  using (var client = new SshClient("localhost", "{username}", "{password}"))
            {
                client.Connect();

                SshCommand cmd = client.RunCommand($"echo -e \"{password}\" | sudo -S bash changePassword.sh {LinuxUsername} {_newPlainTextPassword}");
            }

        }

推荐阅读