错误服务器响应不包含ssh协议标识,c# - 多跳SSH出现问题,密码提示为C# - 堆栈内存溢出...

如何将密码传递到不允许我通过命令发送的SSH提示符?

这不行

KeyboardInteractiveAuthenticationMethod DEVICEkauth = new KeyboardInteractiveAuthenticationMethod(DEVICEsshUname);

PasswordAuthenticationMethod DEVICEpauth = new PasswordAuthenticationMethod(DEVICEsshUname, DEVICEsshPass);

我正在尝试建立多跳ssh连接,由于SSH协议标识,它在第三跳上失败。

通过C#中的SSH.NET进行多跳SSH不能解决我的问题,它确实帮助了我大部分时间。 此问题正在尝试执行不起作用的第三跳。

这是通过VeloCloud网关连接到Velo Edge,然后再连接到终端设备(DiGi Transport)

到目前为止,我有:

int sssshTimeOut = 1000;

KeyboardInteractiveAuthenticationMethod VCGkauth = new KeyboardInteractiveAuthenticationMethod(VCGsshUname);

PasswordAuthenticationMethod VCGpauth = new PasswordAuthenticationMethod(VCGsshUname, VCGsshPass);

VCGkauth.AuthenticationPrompt += new EventHandler(VCGHandleKeyEvent);

SshClient sshVCG = new SshClient(new ConnectionInfo(VCGsshHost, VCGsshPort, VCGsshUname, VCGpauth, VCGkauth));

if (sssshTimeOut != 0)

{

sshVCG.ConnectionInfo.Timeout = TimeSpan.FromSeconds(sssshTimeOut);

}

void VCGHandleKeyEvent(Object sender, AuthenticationPromptEventArgs e)

{

foreach (AuthenticationPrompt prompt in e.Prompts)

{

if (prompt.Request.IndexOf("Password:", StringComparison.InvariantCultureIgnoreCase) != -1)

{

prompt.Response = VCGsshPass;

}

}

}

KeyboardInteractiveAuthenticationMethod EDGEkauth = new KeyboardInteractiveAuthenticationMethod(EDGEsshUname);

PasswordAuthenticationMethod EDGEpauth = new PasswordAuthenticationMethod(EDGEsshUname, EDGEsshPass);

EDGEkauth.AuthenticationPrompt += new EventHandler(EDGEHandleKeyEvent);

void EDGEHandleKeyEvent(Object sender, AuthenticationPromptEventArgs e)

{

foreach (AuthenticationPrompt prompt in e.Prompts)

{

if (prompt.Request.IndexOf("Password:", StringComparison.InvariantCultureIgnoreCase) != -1)

{

prompt.Response = EDGEsshPass;

}

}

}

KeyboardInteractiveAuthenticationMethod DEVICEkauth = new KeyboardInteractiveAuthenticationMethod(DEVICEsshUname);

PasswordAuthenticationMethod DEVICEpauth = new PasswordAuthenticationMethod(DEVICEsshUname, DEVICEsshPass);

DEVICEkauth.AuthenticationPrompt += new EventHandler(DEVICEHandleKeyEvent);

void DEVICEHandleKeyEvent(Object sender, AuthenticationPromptEventArgs e)

{

foreach (AuthenticationPrompt prompt in e.Prompts)

{

if (prompt.Request.IndexOf("password:", StringComparison.InvariantCultureIgnoreCase) != -1)

{

prompt.Response = DEVICEsshPass;

}

}

}

Console.WriteLine("Connecting to VCG: "+ VCGsshHost + "");

sshVCG.Connect();

Console.WriteLine("Sending ARP command to VCG: " + VCGsshHost + "");

var commandVCG = sshVCG.CreateCommand("arp -n");

var resultVCG = commandVCG.Execute();

Console.WriteLine(resultVCG);

Console.WriteLine("");

Console.WriteLine("");

Console.WriteLine("Forwarding SSH connection to Edge: " + EDGEsshHost + "");

var portVCG = new ForwardedPortLocal("127.0.0.1", uintVCGsshPort, EDGEsshHost, uintEDGEsshPort);

sshVCG.AddForwardedPort(portVCG);

portVCG.Start();

if (portVCG.IsStarted)

{

Console.WriteLine("Forwarding SSH connection to Edge: Started!");

}

else

{

Console.WriteLine("Forwarding SSH connection to Edge: seems to have failed.....");

}

SshClient sshEDGE = new SshClient(new ConnectionInfo(portVCG.BoundHost, (int)portVCG.BoundPort, EDGEsshUname, EDGEpauth, EDGEkauth));

sshEDGE.Connect();

Console.WriteLine("Sending ARP command to Edge: " + EDGEsshHost + "");

var commandEDGE = sshEDGE.CreateCommand("arp -n");

var resultEDGE = commandEDGE.Execute();

Console.WriteLine(resultEDGE);

Console.WriteLine("");

Console.WriteLine("");

Console.WriteLine("Forwarding SSH connection to EndDevice: " + DEVICEsshHost + "");

var portEDGE = new ForwardedPortLocal("127.0.0.1", uintEDGEsshPort, DEVICEsshHost, uintDEVICEsshPort);

sshEDGE.AddForwardedPort(portEDGE);

//sshVCG.AddForwardedPort(portEDGE);

portEDGE.Start();

if (portEDGE.IsStarted)

{

Console.WriteLine("Forwarding SSH connection to End Device: Started!");

}

else

{

Console.WriteLine("Forwarding SSH connection to End Device: seems to have failed.....");

}

SshClient sshDEVICE = new SshClient(new ConnectionInfo(portEDGE.BoundHost, (int)portEDGE.BoundPort, DEVICEsshUname, DEVICEpauth, DEVICEkauth));

//SshClient sshDEVICE = new SshClient(new ConnectionInfo(portVCG.BoundHost, (int)portVCG.BoundPort, DEVICEsshUname, DEVICEpauth, DEVICEkauth));

//SshClient sshDEVICE = new SshClient(portEDGE.BoundHost, (int)portEDGE.BoundPort, DEVICEsshUname, DEVICEsshPass);

sshDEVICE.Connect();

Console.WriteLine("");

Console.WriteLine("");

Console.WriteLine("Sending HW command to End Device: " + DEVICEsshHost + "");

var commandDEVICE = sshDEVICE.CreateCommand("hw");

var resultDEVICE = commandDEVICE.Execute();

Console.WriteLine(resultDEVICE);

我期望SSH连接到VGC,然后连接Edge,然后连接终端设备,并运行命令。

如果我通过Plink做到这一点,就可以解决...

错误:

Renci.SshNet.Common.SshConnectionException:“服务器响应不包含SSH协议标识。”

链接

Plink Window 1

C:\Users\ncarter>Plink.exe -ssh -L 4000:xxx.xxx.xxx.2:22 xxxxxxx@xx.xx.xxx.85 -P 10444

Using username "xxxxxxx".

xxxxxx@xx.xx.xxx.85's password:

Welcome to Velocloud VCG (GNU/Linux 3.13.0-160-generic x86_64)

* Documentation: https://help.ubuntu.com/

Get cloud support with Ubuntu Advantage Cloud Guest:

http://www.ubuntu.com/business/services/cloud

Last login: Fri Oct 11 18:44:59 2019 from xxx.xxx.x.42

]0;xxxxxx@xxxx-xxlab: ~xxxxxx@xxxx-xxlab:~$

Plink Window 2

C:\Users\ncarter>Plink.exe -ssh -L 8001:xxx.xxx.xx.1:xxx97 xxxx@127.0.0.1 -P 4000

Using username "xxxxx".

Using keyboard-interactive authentication.

Password:

BusyBox v1.23.2 (2018-10-19 16:11:09 UTC) built-in shell (ash)

_ __ __ ________ __

| | / /__ / /___ / ____/ /___ __ ______/ /

| | / / _ \/ / __ \/ / / / __ \/ / / / __ /

| |/ / __/ / /_/ / /___/ / /_/ / /_/ / /_/ /

|___/\___/_/\____/\____/_/\____/\__,_/\__,_/

VeloCloud Inc.

------------------------------------------------

velocloud Test-Edge-1:~# [6narp

Address HWtype HWaddress Flags Mask Iface

192.168.11.1 ether 00:04:2d:07:b9:1f C ge4

xx.xxx.xxx.227 ether 50:7b:9d:35:1d:12 C br-network1

SIP-xxxx.xxx ether 80:5e:c0:29:61:ad C br-network1

198.19.0.33 ether 00:50:56:91:ff:2e C ge3

198.19.0.1 ether 90:6c:ac:bb:c9:8c C ge3

198.19.0.32 ether 00:50:56:91:7f:da C ge3

xxx.xxx.xx.4 ether 50:7b:9d:35:1d:12 C br-network1

velocloud Test-Edge-1:~# [6nssh -p xxx97 xxxxxx@192.168.11.1 -t 'hw'

xxxxxx@192.168.11.1's password:

SN:506143

Welcome. Your access level is SUPER

ss506143>

Serial Number: 506143

HW Rev: 3205b

MAC 0: 00042d07b91f

MAC 1: 00042df7b91f

MAC 2: 00042de7b91f

MAC 3: 00042dd7b91f

MAC 4: 00042dc7b91f

MAC 5: 000000000000

MAC 6: 000000000000

Model: WR11

Part#: WR11-L800-DE1-SU

RAM: 64 MB

OK

ss506143>Connection to 192.168.11.1 closed.

velocloud Test-Edge-1:~# [6n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值