62

私は若い学生で、今週の宿題を受け取りました。SSHサーバーに接続して「etc/init.d / networkrestart」コマンドを送信できるプログラムを作成する必要があるため、私にとってはかなり困難です。

このアプリケーションをC#でプログラムする必要がありますが、これはかなり新しいものです(いくつかの学校のレッスンから学んだばかりです)。GUIも作成する必要があります。

C#の基本(ループなど)を理解しています。

GUI、メニュー、ボタン、ログリストボックスはすでに作成しています。GUI = 3つのテキストボックス(IP、ユーザー名、パスワード)と接続するボタン。

UIのスクリーンショット

コードのスクリーンショット

MicrosoftVistualStudioでコーディングしています。

私の質問は、サーバーへのSSH接続を確立するにはどうすればよいですか?

4

5 に答える 5

113

私はしばらく前にプロジェクトでSSH.Netを使用し、非常に満足していました。また、使用方法に関する多くのサンプルを含む優れたドキュメントが付属しています。

ドキュメント(現在GitHubでは利用できません)を含め、元のパッケージのWebサイトはまだここにあります。

あなたの場合、コードは次のようになります。

using (var client = new SshClient("hostnameOrIp", "username", "password"))
{
    client.Connect();
    client.RunCommand("etc/init.d/networking restart");
    client.Disconnect();
}
于 2012-10-15T19:26:12.003 に答える
9
SshClient cSSH = new SshClient("192.168.10.144", 22, "root", "pacaritambo");
cSSH.Connect();
SshCommand x = cSSH.RunCommand("exec \"/var/lib/asterisk/bin/retrieve_conf\"");
cSSH.Disconnect();
cSSH.Dispose();

//SSH.Netを使用

于 2014-11-18T20:54:05.203 に答える
3

SharpSSHがその仕事をするはずです。 http://www.codeproject.com/Articles/11966/sharpSsh-A-Secure-Shell-SSH-library-for-NET

于 2012-06-23T13:03:48.787 に答える
1

遅い答えですが、私にとっては、残念ながらどの解決策も機能しませんでした。実際、複数のコマンドを実行する必要があり、コマンドが相互に依存している場合(最初のコマンドが環境を変更した場合、たとえば、後者のコマンドで使用される変数)、1つのチャネル内で実行する必要があります。&&そのために、または;:のようなシェル構文を使用します。

using (var client = new SshClient("hostnameOrIp", "username", "password"))
{
    client.Connect();

    using (var command = client.CreateCommand("command1 && command2"))
    {
        Console.Write(command.Execute()); //Don't forget to Execute the command
    }

    client.Disconnect();
}
于 2021-06-17T08:13:52.113 に答える
0

.Netコアの場合、SSH.netの使用で多くの問題が発生し、非推奨になりました。他のプログラミング言語でも、他のいくつかのライブラリを試しました。しかし、私は非常に良い代替案を見つけました。 https://stackoverflow.com/a/64443701/8529170

于 2020-10-22T21:00:13.453 に答える