Esempio n. 1
0
        public static void RunExample(String[] arg)
        {
            try
            {
                //Create a new JSch instance
                JSch jsch = new JSch();

                //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();

                //Get subsystem name from user
                String subsystem = InputForm.GetUserInput("Enter subsystem name", "");

                //Open a new Subsystem channel on the SSH session
                Channel channel = session.openChannel("subsystem");
                ((ChannelSubsystem)channel).setSubsystem(subsystem);
                ((ChannelSubsystem)channel).setPty(true);


                //Redirect standard I/O to the SSH channel
                channel.setInputStream(Console.OpenStandardInput());
                channel.setOutputStream(Console.OpenStandardOutput());
                ((ChannelSubsystem)channel).setErrStream(Console.OpenStandardError());

                //Connect the channel
                channel.connect();

                Console.WriteLine("-- Subsystem '" + subsystem + "' 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);
            }
        }
Esempio n. 2
0
            public string[] promptKeyboardInteractive(string destination, string name, string instruction, string[] prompt, bool[] echo)
            {
                string prmpt = prompt != null && prompt.Length > 0 ? prompt[0] : "";

                passwd = InputForm.GetUserInput(prmpt, true);
                return(new string[] { passwd });
            }
Esempio n. 3
0
        public static void RunExample(String[] arg)
        {
            try
            {
                //Create a new JSch instance
                JSch jsch = new JSch();

                //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);

                //Add AES128 as default cipher in the session config store
                System.Collections.Hashtable config = new System.Collections.Hashtable();
                config.Add("cipher.s2c", "aes128-cbc,3des-cbc");
                config.Add("cipher.c2s", "aes128-cbc,3des-cbc");
                session.setConfig(config);

                //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();

                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);
            }
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        public static void RunExample(String[] arg)
        {
            int port;

            try
            {
                //Create a new JSch instance
                JSch jsch = new JSch();

                //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);
                session.connect();

                //Get from user the remote host and remote host port
                String foo = InputForm.GetUserInput("Enter host and port", "host:port");
                host = foo.Substring(0, foo.IndexOf(':'));
                port = int.Parse(foo.Substring(foo.IndexOf(':') + 1));

                Console.WriteLine("System.{in,out} will be forwarded to " +
                                  host + ":" + port + ".");
                Channel channel = session.openChannel("direct-tcpip");
                ((ChannelDirectTCPIP)channel).setInputStream(Console.OpenStandardInput());
                ((ChannelDirectTCPIP)channel).setOutputStream(Console.OpenStandardOutput());
                ((ChannelDirectTCPIP)channel).setHost(host);
                ((ChannelDirectTCPIP)channel).setPort(port);
                channel.connect();

                while (!channel.isClosed())
                {
                    System.Threading.Thread.Sleep(500);
                }
                channel.disconnect();
                session.disconnect();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        public static void RunExample(String[] arg)
        {
            //int port;

            try
            {
                //Create a new JSch instance
                JSch jsch = new JSch();

                //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);

                //Get from user the local port, remote host and remote host port
                String foo   = InputForm.GetUserInput("Enter -L port:host:hostport", "port:host:hostport");
                int    lport = int.Parse(foo.Substring(0, foo.IndexOf(':')));
                foo = foo.Substring(foo.IndexOf(':') + 1);
                String rhost = foo.Substring(0, foo.IndexOf(':'));
                int    rport = int.Parse(foo.Substring(foo.IndexOf(':') + 1));

                // username and password will be given via UserInfo interface.
                UserInfo ui = new MyUserInfo();
                session.setUserInfo(ui);
                session.connect();

                Console.WriteLine("localhost:" + lport + " -> " + rhost + ":" + rport);

                //Set port forwarding on the opened session
                session.setPortForwardingL(lport, rhost, rport);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Esempio n. 8
0
 /// <summary>
 /// Prompt the user for a password
 /// </summary>\
 public bool promptPassword(String message)
 {
     passwd = InputForm.GetUserInput(message, true);
     return(true);
 }
Esempio n. 9
0
        public static void RunExample(params string[] arg)
        {
            if (arg.Length < 3)
            {
                Console.Error.WriteLine(
                    "usage: java KeyGen rsa output_keyfile comment\n" +
                    "       java KeyGen dsa  output_keyfile comment");
                return;
            }

            try
            {
                //Get sig type ('rsa' or 'dsa')
                String _type = arg[0];
                int    type  = 0;
                if (_type.Equals("rsa"))
                {
                    type = KeyPair.RSA;
                }
                else if (_type.Equals("dsa"))
                {
                    type = KeyPair.DSA;
                }
                else
                {
                    Console.Error.WriteLine(
                        "usage: java KeyGen rsa output_keyfile comment\n" +
                        "       java KeyGen dsa  output_keyfile comment");
                    return;
                }
                //Output file name
                String filename = arg[1];
                //Signature comment
                String comment = arg[2];

                //Create a new JSch instance
                JSch jsch = new JSch();

                //Prompt the user for a passphrase for the private key file
                String passphrase = InputForm.GetUserInput("Enter passphrase (empty for no passphrase)", true);


                //Generate the new key pair
                KeyPair kpair = KeyPair.genKeyPair(jsch, type);
                //Set a passphrase
                kpair.setPassphrase(passphrase);
                //Write the private key to "filename"
                kpair.writePrivateKey(filename);
                //Write the public key to "filename.pub"
                kpair.writePublicKey(filename + ".pub", comment);
                //Print the key fingerprint
                Console.WriteLine("Finger print: " + kpair.getFingerPrint());
                //Free resources
                kpair.dispose();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            return;
        }
Esempio n. 10
0
        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);
            }
        }
Esempio n. 11
0
 /// <summary>
 /// Prompt the user for a passphrase (passwd for the private key file)
 /// </summary>
 public bool promptPassphrase(String message)
 {
     passphrase = InputForm.GetUserInput(message, true);
     return(true);
 }