Last active
August 6, 2024 19:59
-
-
Save piccaso/d963331dcbf20611b094 to your computer and use it in GitHub Desktop.
ssh.net Example - Keybased Authentication, File Upload, Shell Commands
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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(); | |
} | |
} |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Any idea how to provide a option like StrictHostKeyChecking=no to the ssl client?