public static void RunExample(String[] arg) { try { JSch jsch = new JSch(); //Get the "known hosts" filename from the user Console.WriteLine("Please choose your private key file..."); String file = InputForm.GetFileFromUser("Choose your privatekey(ex. ~/.ssh/id_dsa)"); Console.WriteLine("You chose " + file + "."); //Add the identity file to JSch jsch.addIdentity(file); //Prompt for username and server host Console.WriteLine("Please enter the user and host info at the popup window..."); String host = InputForm.GetUserInput ("Enter username@hostname", Environment.UserName + "@localhost"); String user = host.Substring(0, host.IndexOf('@')); host = host.Substring(host.IndexOf('@') + 1); //Create a new SSH session Session session = jsch.getSession(user, host, 22); // username and password will be given via UserInfo interface. UserInfo ui = new MyUserInfo(); session.setUserInfo(ui); //Connect to remote SSH server session.connect(); //Open a new Shell channel on the SSH session Channel channel = session.openChannel("shell"); //Redirect standard I/O to the SSH channel channel.setInputStream(Console.OpenStandardInput()); channel.setOutputStream(Console.OpenStandardOutput()); //Connect the channel channel.connect(); //Wait till channel is closed while (!channel.isClosed()) { System.Threading.Thread.Sleep(500); } //Disconnect from remote server channel.disconnect(); session.disconnect(); } catch (Exception e) { Console.WriteLine(e); } }
public static void RunExample(String[] arg) { //Get the private key filename from the user Console.WriteLine("Please choose your private key file..."); String pkey = InputForm.GetFileFromUser("Choose your privatekey(ex. ~/.ssh/id_dsa)"); Console.WriteLine("You chose " + pkey + "."); //Create a new JSch instance JSch jsch = new JSch(); try { //Load the key pair KeyPair kpair = KeyPair.load(jsch, pkey); //Print the key file encryption status Console.WriteLine(pkey + " has " + (kpair.isEncrypted()?"been ":"not been ") + "encrypted"); String passphrase = ""; while (kpair.isEncrypted()) { passphrase = InputForm.GetUserInput("Enter passphrase for " + pkey, true); if (!kpair.decrypt(passphrase)) { Console.WriteLine("failed to decrypt " + pkey); } else { Console.WriteLine(pkey + " is decrypted."); } } passphrase = ""; passphrase = InputForm.GetUserInput("Enter new passphrase for " + pkey + " (empty for no passphrase)", true); //Set the new passphrase kpair.setPassphrase(passphrase); //write the key to file kpair.writePrivateKey(pkey); //free the resource kpair.dispose(); } catch (Exception e) { Console.WriteLine(e.Message); } }
public static void RunExample(String[] arg) { try { //Get the "known hosts" filename from the user Console.WriteLine("Please select your 'known_hosts' from the poup window..."); String file = InputForm.GetFileFromUser("Choose your known_hosts(ex. ~/.ssh/known_hosts)"); Console.WriteLine("You chose " + file + "."); //Create a new JSch instance JSch jsch = new JSch(); //Set the known hosts file var hkr = jsch.getHostKeyRepository(); hkr.setKnownHosts(file); // Get the KnownHosts repository from JSchs // HostKeyRepository hkr=jsch.getHostKeyRepository(); //Print all known hosts and keys HostKey[] hks = hkr.getHostKey(); HostKey hk; if (hks != null) { Console.WriteLine(); Console.WriteLine("Host keys in " + hkr.getKnownHostsRepositoryID() + ":"); for (int i = 0; i < hks.Length; i++) { hk = hks[i]; Console.WriteLine(hk.getHost() + " " + hk.getType() + " " + hk.getFingerPrint(jsch)); } Console.WriteLine(""); } //Now connect to the remote server... //Prompt for username and server host Console.WriteLine("Please enter the user and host info at the popup window..."); String host = InputForm.GetUserInput ("Enter username@hostname", Environment.UserName + "@localhost"); String user = host.Substring(0, host.IndexOf('@')); host = host.Substring(host.IndexOf('@') + 1); //Create a new SSH session Session session = jsch.getSession(user, host, 22); // username and password will be given via UserInfo interface. UserInfo ui = new MyUserInfo(); session.setUserInfo(ui); //Connect to remote SSH server session.connect(); //Print the host key info //of the connected server: hk = session.getHostKey(); Console.WriteLine("HostKey: " + hk.getHost() + " " + hk.getType() + " " + hk.getFingerPrint(jsch)); //Open a new Shell channel on the SSH session Channel channel = session.openChannel("shell"); //Redirect standard I/O to the SSH channel channel.setInputStream(Console.OpenStandardInput()); channel.setOutputStream(Console.OpenStandardOutput()); //Connect the channel channel.connect(); Console.WriteLine("-- Shell channel is connected using the {0} cipher", session.getCipher()); //Wait till channel is closed while (!channel.isClosed()) { System.Threading.Thread.Sleep(500); } //Disconnect from remote server channel.disconnect(); session.disconnect(); } catch (Exception e) { Console.WriteLine(e.Message); } }