前提・実現したいこと
VS2017(C#)のコンソールアプリの中でssh.netライブラリを参照し,sshコマンドによってraspberry piにssh接続できるようにしたいです.
ここに質問の内容を詳しく書いてください。
コンソールアプリをVSで作成しました.プログラムの中でssh.netというライブラリを参照し,teratermなどのターミナルソフトを使わずに,raspberry piにプログラムからssh接続できるようにしたいです.VSは2017 言語はC#で,windowsは7です.raspberry piは3のmodelBを使用しており,osはraspbianです.VSが入ってるpcと,raspberry pi同じルータに無線でつながっています.インターネットにはつながっておらず,ローカル(会社内や学校内)で接続されています.teratermなどのソフトでは正常にssh接続ができます.プログラム内でエラーが発生してしまい,それを改善することがどうしてもできません.
発生している問題・エラーメッセージ
System.Net.Sockets.SocketException: 'アクセス許可で禁じられた方法でソケットにアクセスしようとしました。'
該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using Renci.SshNet; 7 8namespace ConsoleApp2 9{ 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 try 15 { 16 // 接続先のホスト名またはIPアドレス 17 var hostNameOrIpAddr = "xxx.xxx.x.x"; 18 19 // 接続先のポート番号 20 var portNo = 22; 21 22 // ログインユーザー名 23 var userName = "pi"; 24 25 // ログインパスワード 26 var passWord = "xxxxxxxx"; 27 28 // コネクション情報 29 ConnectionInfo info = new ConnectionInfo(hostNameOrIpAddr, portNo, userName, 30 new AuthenticationMethod[] { 31 new PasswordAuthenticationMethod(userName, passWord) 32 /* PrivateKeyAuthenticationMethod("キーの場所")を指定することでssh-key認証にも対応しています */ 33 } 34 ); 35 36 // クライアント作成 37 SshClient ssh = new SshClient(info); 38 39 // 接続開始 40 ssh.Connect(); 41 42 if (ssh.IsConnected) 43 { 44 // 接続に成功した(接続状態である) 45 Console.WriteLine("[OK] SSH Connection succeeded!!"); 46 } 47 else 48 { 49 // 接続に失敗した(未接続状態である) 50 Console.WriteLine("[NG] SSH Connection failed!!"); 51 return; 52 } 53 54 // 接続終了 55 ssh.Disconnect(); 56 } 57 catch (Exception ex) 58 { 59 // エラー発生時 60 Console.WriteLine(ex); 61 throw ex; 62 } 63 } 64 } 65} 66
試したこと
raspberry piでsshを無効にしてまた有効に戻すや,エラーメッセージをいろいろと調べましたが,初心者で知識不足ということもあり改善できませんでした.
補足情報(FW/ツールのバージョンなど)
そもそもssh.netでraspberry piにリモート接続できるのかどうか調べても出てこなかったため,把握していない現状です... すごく的外れで意味の分からないことを言ってしまっているかもしれません.. これより先に進めず困っています.どなたか詳しい方,アドバイスいただけたら嬉しいです.よろしくお願いします.