Mat*_*rty 5 vb.net ssh ssh.net
我目前正在尝试使用Visual Basic和SSH.NET为我的Linux服务器制作类似控制面板的程序.现在,我想按下按钮时重启Linux机器.
这是我到目前为止:
Dim connInfo As New Renci.SshNet.PasswordConnectionInfo("IP", "USERNAME", "PASSWORD")
Dim sshClient As New Renci.SshNet.SshClient(connInfo)
Dim cmd As Renci.SshNet.SshCommand
Private Sub MaterialFlatButton1_Click(sender As Object, e As EventArgs) Handles MaterialFlatButton1.Click
Using sshClient
sshClient.Connect()
cmd = sshClient.RunCommand("reboot")
sshClient.Disconnect()
End Using
End Sub
Run Code Online (Sandbox Code Playgroud)
当我按下按钮时,我得到的错误是:
Renci.SshNet.dll中出现未处理的"Renci.SshNet.Common.SshConnectionException"类型异常
附加信息:已建立的连接已由主机中的软件中止.
我需要用我的代码改变什么吗?
如果您是服务器管理员,可以选择将密钥交换算法限制为diffie-hellman-group1-sha1.重要的是要注意该算法不再被认为是安全的,但Open SSH支持它.
为此,请转到您的Linux服务器并编辑该文件
的/ etc/SSH/sshd_config中
添加行(文件中间的某个位置)
# Disable all Kex Algorithms but the one defined below (so Renci SSH.NET 2013 works)
KexAlgorithms diffie-hellman-group1-sha1
Run Code Online (Sandbox Code Playgroud)
重启ssh:
sudo service ssh stop
sudo service ssh start
Run Code Online (Sandbox Code Playgroud)
现在SSH.NET可以工作,但是要通过ssh(终端)连接到服务器,你应该在你的客户端配置文件上定义协议:
编辑文件(我在cygwin上使用ssh,其他客户端超出我的知识)
的〜/ .ssh /配置
添加行
KexAlgorithms +diffie-hellman-group1-sha1
Run Code Online (Sandbox Code Playgroud)
最后,我最终没有使用此解决方案,因为最新的filezilla没有与服务器连接,我有一个用户使用它来上传文件.
我自己也遇到了同样的问题。tl;dr:升级到 SSH.NET 的测试版:
Install-Package SSH.NET -Pre
Run Code Online (Sandbox Code Playgroud)
进一步阐述
如果您在尝试连接失败后立即检查 Linux 服务器上的日志:
grep 'sshd' /var/log/auth.log
Run Code Online (Sandbox Code Playgroud)
你可能会看到这样一行:
sshd[2467]:致命:mm_answer_moduli:错误参数:2048 2048 1024
最近版本的 ssh 服务器变得更加严格,当前(稳定)版本的 SSH.NET 不支持这一点。更具体地说,它变得更加严格,要求密钥大小大于 1024。您可以在 codeplex 上查看错误报告。这是一个遇到类似问题的人,升级对他来说也有效。
| 归档时间: |
|
| 查看次数: |
5742 次 |
| 最近记录: |