-
-
Save 0xF1o/d963331dcbf20611b094 to your computer and use it in GitHub Desktop.
| /* | |
| get SSH.NET (BSD License: http://sshnet.codeplex.com/license) | |
| with NuGet: | |
| >Install-Package SSH.NET -Version 2013.4.7 | |
| or just get the dll from here: http://j.mp/sshNet | |
| */ | |
| using System; | |
| using System.Collections.Generic; | |
| using Renci.SshNet; /* reference needed: Renci.SshNet.dll */ | |
| class Program | |
| { | |
| static void Main(string[] args){ | |
| // Setup Credentials and Server Information | |
| ConnectionInfo ConnNfo = new ConnectionInfo("hostOrIP",22,"username", | |
| new AuthenticationMethod[]{ | |
| // Pasword based Authentication | |
| new PasswordAuthenticationMethod("username","password"), | |
| // Key Based Authentication (using keys in OpenSSH Format) | |
| new PrivateKeyAuthenticationMethod("username",new PrivateKeyFile[]{ | |
| new PrivateKeyFile(@"..\openssh.key","passphrase") | |
| }), | |
| } | |
| ); | |
| // Execute a (SHELL) Command - prepare upload directory | |
| using (var sshclient = new SshClient(ConnNfo)){ | |
| sshclient.Connect(); | |
| using(var cmd = sshclient.CreateCommand("mkdir -p /tmp/uploadtest && chmod +rw /tmp/uploadtest")){ | |
| cmd.Execute(); | |
| Console.WriteLine("Command>" + cmd.CommandText); | |
| Console.WriteLine("Return Value = {0}", cmd.ExitStatus); | |
| } | |
| sshclient.Disconnect(); | |
| } | |
| // Upload A File | |
| using (var sftp = new SftpClient(ConnNfo)){ | |
| string uploadfn = "Renci.SshNet.dll"; | |
| sftp.Connect(); | |
| sftp.ChangeDirectory("/tmp/uploadtest"); | |
| using (var uplfileStream = System.IO.File.OpenRead(uploadfn)){ | |
| sftp.UploadFile(uplfileStream, uploadfn, true); | |
| } | |
| sftp.Disconnect(); | |
| } | |
| // Execute (SHELL) Commands | |
| using (var sshclient = new SshClient(ConnNfo)){ | |
| sshclient.Connect(); | |
| // quick way to use ist, but not best practice - SshCommand is not Disposed, ExitStatus not checked... | |
| Console.WriteLine(sshclient.CreateCommand("cd /tmp && ls -lah").Execute()); | |
| Console.WriteLine(sshclient.CreateCommand("pwd").Execute()); | |
| Console.WriteLine(sshclient.CreateCommand("cd /tmp/uploadtest && ls -lah").Execute()); | |
| sshclient.Disconnect(); | |
| } | |
| Console.ReadKey(); | |
| } | |
| } |
Many thanks for developing this. I am able to connect in one go.
It rocks! thnx for examples
Thank you. It's great example. :)
Any idea how to provide a option like StrictHostKeyChecking=no to the ssl client?
Very helpfull. Thx!
Any idea how to provide a option like StrictHostKeyChecking=no to the ssl client?
please help
Hi All,
I've been struggling with just running a basic command on a unix host.
Example what I have come up with
`Public Function CreateConnectionInfo() as ConnectionInfo
Dim connNfo as New PasswordConnectionInfo("host", "user", "pw")
Using sshClient = New sshClient(connNfo)
sshClient.Connect()
Using cmd = sshClient.CreateCommand("ls -ltr")
cmd.Execute()
MsgBox("command>" & cmd.CommandText)
MsgBox("Return Value = {0}, cmd.ExitStatus)
End Using
End Using
`
When I check the values being send I never see the PW and the host refuses the connection. I had to have my pw reset about 20 times today..lol
My wish is to use public/private keys instead of a user/pw. Which i have used/created with putty and use it everyday.
Any suggestions would be greatly appreciated.
WannaBe Programmer
MW
You rock!! Thanks!