2016-06-02 3 views
3

В настоящее время я пытаюсь создать такую ​​панель управления для своего Linux-сервера, используя Visual Basic и SSH.NET. Прямо сейчас, я хочу сделать перезагрузку Linux, когда я нажимаю кнопку.Не удается подключиться к SSH-серверу с помощью SSH.NET

Вот то, что я до сих пор:

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 

При нажатии на кнопку, то ошибка, я получаю:

Необработанное исключение типа «Renci.SshNet.Common.SshConnectionException» произошло in Renci.SshNet.dll

Дополнительная информация: Установленное соединение было прервано программным обеспечением на вашей главной машине.

Есть ли что-нибудь, что мне нужно будет изменить с помощью моего кода?

ответ

4

Я сам столкнулся с этой проблемой. ТЛ; др: upgrade to the beta version of SSH.NET:

Install-Package SSH.NET -Pre 

для дальнейшей разработки

Если изучить журналы на вашем Linux сервере сразу после того, как ваша неудачная попытка подключения:

grep 'sshd' /var/log/auth.log 

Вы, вероятно, см. такую ​​строку:

sshd [2467]: fata л: mm_answer_moduli: плохие параметры: 2048 2048 1024

Последние версии SSH сервера становится все более строгим, а ток (стабильная) версия SSH.NET не поддерживает это. Более конкретно, он стал более строгим, требуя большего размера ключа, чем 1024. Вы можете увидеть отчет об ошибке on codeplex. И here's человек, столкнувшийся с аналогичной проблемой, для которого тоже работало обновление.

+0

Бета-версия SSH.NET, похоже, имеет утечки памяти (у меня были проблемы с ней сегодня), используйте с осторожностью. Для решения этой проблемы требуется открытый запрос: https://github.com/sshnet/SSH.NET/pull/7/files/6b1739d20c3acf7f89bb1380915aeccb67d18552 –

+0

@MarcosBrigante, спасибо, что привлекли внимание сообщества! –

7

Если вы являетесь администратором сервера, существует возможность ограничения алгоритмов обмена ключами на diffie-hellman-group1-sha1. Важно заметить, что этот алгоритм больше не считается безопасным, но Open SSH поддерживает его.

Чтобы сделать это, перейдите на Linux-сервере и редактировать файл

/и т.д./SSH/sshd_config

Добавьте строки (где-то в середине файла)

# Disable all Kex Algorithms but the one defined below (so Renci SSH.NET 2013 works) 
KexAlgorithms diffie-hellman-group1-sha1 

Перезагрузка SSH:

sudo service ssh stop 
sudo service ssh start 

Теперь SSH.NET будет работать, но для подключения к серверу через ssh (терминал), вы должны определить протокол в своем конфигурационном файле клиента:

Редактировать файл (я использую ssh на cygwin, другие клиенты мне не известны)

~/.ssh/конфигурации

Добавьте строку

KexAlgorithms +diffie-hellman-group1-sha1 

Просто сделать вывод, я в конечном итоге не используя это решение, потому что последняя FileZilla не соединяется с сервером, и я иметь au ser, используя его для загрузки файлов.

+1

Это спасло меня - спасибо! – steampowered

Смежные вопросы