C# SSH Remote在Oracle Linux 7上获取更少的环境变量
我正在通过SSH访问Oracle Linux Server 7并成功连接。 每当我想通过powershell获取所有环境变量时,它都可以正常工作,但是当我使用(.NET SSH Library)时,我得到的环境变量就更少了 这是我的代码C# SSH Remote在Oracle Linux 7上获取更少的环境变量,c#,linux,oracle,ssh,environment-variables,C#,Linux,Oracle,Ssh,Environment Variables,我正在通过SSH访问Oracle Linux Server 7并成功连接。 每当我想通过powershell获取所有环境变量时,它都可以正常工作,但是当我使用(.NET SSH Library)时,我得到的环境变量就更少了 这是我的代码 static void Main(string[] args) { var host = $"host"; var user = "username"; var pwd = "passwo
static void Main(string[] args)
{
var host = $"host";
var user = "username";
var pwd = "password";
ConnectionInfo ConnNfo = new ConnectionInfo(host, 22, user,
new AuthenticationMethod[]{
// Pasword based Authentication
new PasswordAuthenticationMethod(user,pwd),
new PrivateKeyAuthenticationMethod("rsa.key"),
}
);
using (var sshclient = new SshClient(ConnNfo))
{
sshclient.Connect();
if (sshclient.IsConnected)
{
RunCommand(sshclient, "printenv");
sshclient.Disconnect();
}
}
Console.ReadKey();
}
我在这方面尝试了一些解决方案,但没有得到任何结果。那么在这种情况下我能做什么呢?ssh登录似乎没有加载用户配置文件 通过首先执行概要文件,我获得了完整的环境变量
printenv
//RunCommand(sshclient,“printenv”);
var result=sshclient.RunCommand(“…bash_profile&&printenv”);
Console.WriteLine((result.result));
最可能的解释是,当.NET程序正在创建非交互式会话时,通过powershell连接正在创建交互式会话(您没有显示您运行的命令,因此这是一个有根据的猜测)。如果从powershell执行ssh$host printenv
,您是否看到与运行.NET程序时相同的环境变量集?如果是的话,那就是原因。@KurtisRader我知道由此引起的原因,但我如何解决这个问题?你最初的问题很清楚地表明你不知道行为差异的原因。您可以通过配置.NET程序以建立交互式SSH会话来“解决此问题”,或者重新配置远程shell以为非交互式shell设置所需的环境变量,或者配置SSH以将所需的环境变量从客户端传递到服务器机。