A Secure Shell (SSH) library for .NETssh
以爲有用,就記錄下來了this
http://www.tamirgal.com/blog/page/SharpSSH.aspxspa
http://sourceforge.net/projects/sharpssh/?source=typ_redirect.net
再來個例子供參考orm
public partial class SSHWnd : Form { private SshShell ss = null; private Stream io = null; private SshConnectionInfo scInfo; private static byte[] buffer; private static int bufSize = 256; private static AsyncCallback readCallback; private delegate void addLineDelegate(string s); public SSHWnd(SshConnectionInfo scInfo) { InitializeComponent(); this.scInfo = scInfo; try { ss = new SshShell(scInfo.Host, scInfo.User); if (scInfo.Pass != null) { ss.Password = scInfo.Pass; } if (scInfo.IdentityFile != null) { ss.AddIdentityFile(scInfo.IdentityFile); } ss.Connect(22); io = ss.GetStream(); buffer = new byte[bufSize]; readCallback = new AsyncCallback(OnCompletedRead); io.BeginRead(buffer, 0, bufSize, readCallback, null); } catch { MessageBox.Show("Error!"); } } private void OnCompletedRead(IAsyncResult ar) { int bytesRead = io.EndRead(ar); if (bytesRead > 0) { String str = Encoding.UTF8.GetString(buffer, 0, bytesRead); this.Invoke(new addLineDelegate(addLine), new object[]{str}); io.BeginRead(buffer, 0, bufSize, readCallback, null); } } void addLine(string s) { textBox1.AppendText(s); } private void SSHWnd_FormClosing(object sender, FormClosingEventArgs e) { if (ss.Connected) { io.Close(); ss.Close(); } } private void button1_Click(object sender, EventArgs e) { if (textBox2.Text != "") { try { StreamWriter sw = new StreamWriter(io); sw.Write(textBox2.Text); sw.Write('\n'); sw.Flush(); } catch { MessageBox.Show("Terminated yet!"); this.Close(); } textBox2.Text = ""; } } }