Section C
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Section C

Bienvenue sur le Forum des étudiants de la Section C et leurs amis
 
AccueilAccueil  GalerieGalerie  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-14%
Le deal à ne pas rater :
Apple MacBook Air (2020) 13,3″ Puce Apple M1 – RAM 8Go/SSD 256Go
799 € 930 €
Voir le deal

 

 [Résolu]ssh

Aller en bas 
3 participants
AuteurMessage
Samantha
Rang: Administrateur
Rang: Administrateur
Samantha


Nombre de messages : 1711
Emploi : Informaticienne
Date d'inscription : 28/01/2005

[Résolu]ssh Empty
MessageSujet: [Résolu]ssh   [Résolu]ssh EmptyLun 13 Juin - 11:25

Salut,

Tout d'abord, je tiens à remercier Amen pour son gentil message sur la page d'accueil du forum.

Ensuite, je voudrais vous parler de mon problème de connexion avec un serveur.
Il s'agit de connecter l'utilisateur à un serveur Unix à partir de Windows. Avant les utilisateurs utilisaient puTTY, mnt, il faut le faire sur un programme java.
J'ai trouvé ici un package java qui utilise le protocole ssh2. Dans le repertoire, on peut trouver des classes exemples utilisant ce package.
La classe qui m'intéresse est Shell qui permet d'afficher une boite de dialogue où l'utilisateur saisit le hostname et affiche ensuite un shell:
Code:

import com.jcraft.jsch.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.io.*;

public class Shell{
  //public static void main(String[] arg){
  public Shell() {

    try{
      JSch jsch=new JSch();

      http://jsch.setKnownHosts("/home/foo/.ssh/known_hosts");

      String host=JOptionPane.showInputDialog("Enter username@hostname",
                     System.getProperty("user.name")+
                     "@localhost");
      String user=host.substring(0, host.indexOf('@'));
      host=host.substring(host.indexOf('@')+1);

      Session session=jsch.getSession(user, host, 22);
      http://session.setPassword("your password");
 
      //username and password will be given via UserInfo interface.
      UserInfo ui=new MyUserInfo();
      session.setUserInfo(ui);

      http://java.util.Hashtable config=new java.util.Hashtable();
      http://config.put("StrictHostKeyChecking", "no");
      http://session.setConfig(config);


    session.connect();

        Channel channel=session.openChannel("shell");

        channel.setInputStream(System.in);
        channel.setOutputStream(System.out);

        channel.connect();
       
      }
      catch(Exception e){
        System.out.println(e);
      }
    }

  public static class MyUserInfo implements UserInfo{
    public String getPassword(){ return passwd; }
    public boolean promptYesNo(String str){
      Object[] options={ "yes", "no" };
      int foo=JOptionPane.showOptionDialog(null,
            str,
            "Warning",
            JOptionPane.DEFAULT_OPTION,
            JOptionPane.WARNING_MESSAGE,
            null, options, options[0]);
      return foo==0;
    }
 
    String passwd;
    JTextField passwordField=(JTextField)new JPasswordField(20);

    public String getPassphrase(){ return null; }
    public boolean promptPassphrase(String message){ return true; }
    public boolean promptPassword(String message){
      Object[] ob={passwordField};
      int result=
     JOptionPane.showConfirmDialog(null, ob, message,
               JOptionPane.OK_CANCEL_OPTION);
      if(result==JOptionPane.OK_OPTION){
   passwd=passwordField.getText();
   return true;
      }
      else{ return false; }
    }
    public void showMessage(String message){
      JOptionPane.showMessageDialog(null, message);
    }
  }

}
Le pb c'est que la connexion échoue alors qu'elle se fait avec succès en utilisant puTTY et j'aimerais savoir pkoi. Si quelqu'un a des idées ou si vous avez déjà rencontré ce genre de pbs, votre aide serait la bienvenue.

Merci et bonne journée.


Dernière édition par le Mar 14 Juin - 16:56, édité 1 fois
Revenir en haut Aller en bas
Samantha
Rang: Administrateur
Rang: Administrateur
Samantha


Nombre de messages : 1711
Emploi : Informaticienne
Date d'inscription : 28/01/2005

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptyLun 13 Juin - 12:21

J'ajoutte juste que le message d'erreur est le suivant:
Citation :
The authenticity of host 'hostname' can't be established.
DSA key fingerprint is ...
Are you sure you want to ccontinue connecting?

voili voilou !
Revenir en haut Aller en bas
Samantha
Rang: Administrateur
Rang: Administrateur
Samantha


Nombre de messages : 1711
Emploi : Informaticienne
Date d'inscription : 28/01/2005

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptyMar 14 Juin - 16:55

Salut,

J'ai posé la question sur la mailing list de Jsch et voilà ce qu'il m'ont répondu:
Citation :
How about 'UserAuthKI.java' under 'examples'?
I guess that your remote sshd does not support password authentication,
but support the Keyboard-Interactive authentication to use
password based on PAM.
(Ne me demandez pas de traduire Razz )

La classe UserAuthKI.java est comme suit:
Code:
import com.jcraft.jsch.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class UserAuthKI{
  public static void main(String[] arg){
   
    try{
      JSch jsch=new JSch();

      String host=JOptionPane.showInputDialog("Enter username@hostname",                    System.getProperty("user.name")+ "@localhost");
                           
      String user=host.substring(0, host.indexOf('@'));
      host=host.substring(host.indexOf('@')+1);

      Session session=jsch.getSession(user, host, 22);

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

      Channel channel=session.openChannel("shell");

      channel.setInputStream(System.in);
      channel.setOutputStream(System.out);

      channel.connect();

      //channel.
    }
    catch(Exception e){
      System.out.println(e);
    }
  }


  public static class MyUserInfo implements UserInfo, UIKeyboardInteractive{
    public String getPassword(){ return passwd; }
    public boolean promptYesNo(String str){
      Object[] options={ "yes", "no" };
      int foo=JOptionPane.showOptionDialog(null,
            str,
            "Warning",
            JOptionPane.DEFAULT_OPTION,
            JOptionPane.WARNING_MESSAGE,
            null, options, options[0]);
      return foo==0;
    }

    String passwd;
    JTextField passwordField=(JTextField)new JPasswordField(20);
 
    public String getPassphrase(){ return null; }
    public boolean promptPassphrase(String message){ return false; }
    public boolean promptPassword(String message){
      Object[] ob={passwordField};
      int result=
    JOptionPane.showConfirmDialog(null, ob, message,
              JOptionPane.OK_CANCEL_OPTION);
      if(result==JOptionPane.OK_OPTION){
  passwd=passwordField.getText();
  return true;
      }
      else{ return false; }
    }
    public void showMessage(String message){
      JOptionPane.showMessageDialog(null, message);
    }

    final GridBagConstraints gbc =
  new GridBagConstraints(0,0,1,1,1,1,
                GridBagConstraints.NORTHWEST,
                GridBagConstraints.NONE,
                new Insets(0,0,0,0),0,0);
    private Container panel;
    public String[] promptKeyboardInteractive(String destination,
                    String name,
                    String instruction,
                    String[] prompt,
                    boolean[] echo){
      panel = new JPanel();
      panel.setLayout(new GridBagLayout());

      gbc.weightx = 1.0;
      gbc.gridwidth = GridBagConstraints.REMAINDER;
      gbc.gridx = 0;
      panel.add(new JLabel(instruction), gbc);
      gbc.gridy++;

      gbc.gridwidth = GridBagConstraints.RELATIVE;

      JTextField[] texts=new JTextField[prompt.length];
      for(int i=0; i<prompt.length; i++){
  gbc.fill = GridBagConstraints.NONE;
  gbc.gridx = 0;
  gbc.weightx = 1;
  panel.add(new JLabel(prompt[i]),gbc);

  gbc.gridx = 1;
  gbc.fill = GridBagConstraints.HORIZONTAL;
  gbc.weighty = 1;
  if(echo[i]){
    texts[i]=new JTextField(20);
  }
  else{
    texts[i]=new JPasswordField(20);
  }
  panel.add(texts[i], gbc);
  gbc.gridy++;
      }

      if(JOptionPane.showConfirmDialog(null, panel,
                  destination+": "+name,
                  JOptionPane.OK_CANCEL_OPTION,
                  JOptionPane.QUESTION_MESSAGE)
    ==JOptionPane.OK_OPTION){
  String[] response=new String[prompt.length];
  for(int i=0; i<prompt.length; i++){
    response[i]=texts[i].getText();
  }
  return response;
      }
      else{
  return null;  // cancel
      }
    }
  }
}
et ça marche!
Revenir en haut Aller en bas
inzaghi
Nouveau Membre
Nouveau Membre



Nombre de messages : 5
Age : 36
Date d'inscription : 23/03/2009

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptyMar 24 Mar - 18:26

J'ai un prob ce programme me permet de me connecter seulement mais je veux exécuter un script shell sur un serveur unix via une connexion ssh
Revenir en haut Aller en bas
Abdel
Rang: Administrateur
Rang: Administrateur
Abdel


Nombre de messages : 3078
Age : 43
Emploi : Ingénieur-Chercheur
Date d'inscription : 14/08/2004

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptyMer 25 Mar - 18:16

Cher Inzaghi, d'abord bienvenu sur le forum Wink



Sur la page des exemples de l'API JSch (Java Secure Channel) de jcraft il est écrit concernant la classe exemple UserAuthKI.java :

Citation :
- UserAuthKI.java
This program will demonstrate the keyboard-interactive authentication.
$ CLASSPATH=.:../build javac UserAuthKI.java
$ CLASSPATH=.:../build java UserAuthKI
If the remote sshd supports keyboard-interactive authentication,
you will be prompted.
Donc si l'authentification "clavier-interactive" réussit, tu devrais avoir la main (le prompt) pour écrire ton script shell

Tu peux trouver d'autres exemples d'utilisation de l'API JSch (plus d'une vingtaine) avec leurs descriptions ici

Si t'as une erreur tu peux aussi la poster pour qu'on y voit plus clair
Si peux aussi poser ta question sur la mailing list de l'API JSch

En espérant que ça aide Smile
Revenir en haut Aller en bas
inzaghi
Nouveau Membre
Nouveau Membre



Nombre de messages : 5
Age : 36
Date d'inscription : 23/03/2009

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptyMer 25 Mar - 19:15

Abdel a écrit:
Cher Inzaghi, d'abord bienvenu sur le forum Wink



Sur la page des exemples de l'API JSch (Java Secure Channel) de jcraft il est écrit concernant la classe exemple UserAuthKI.java :

Citation :
- UserAuthKI.java
This program will demonstrate the keyboard-interactive authentication.
$ CLASSPATH=.:../build javac UserAuthKI.java
$ CLASSPATH=.:../build java UserAuthKI
If the remote sshd supports keyboard-interactive authentication,
you will be prompted.
Donc si l'authentification "clavier-interactive" réussit, tu devrais avoir la main (le prompt) pour écrire ton script shell

Tu peux trouver d'autres exemples d'utilisation de l'API JSch (plus d'une vingtaine) avec leurs descriptions ici

Si t'as une erreur tu peux aussi la poster pour qu'on y voit plus clair
Si peux aussi poser ta question sur la mailing list de l'API JSch

En espérant que ça aide Smile
merci bcp à toi et samantha pour cet accueil .Pour le mailing list ils ne m'ont pas répondu depuis 3 jours .
j'ai trouvé aussi une autre bibliothèque en java trilead . qu'est ce que
vous en pensez ?
Pour le script , je veux l'écrire sur le client windows et l'éxécuter à partir du client du serveur ssh Unix .
Revenir en haut Aller en bas
inzaghi
Nouveau Membre
Nouveau Membre



Nombre de messages : 5
Age : 36
Date d'inscription : 23/03/2009

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptyMer 1 Avr - 16:44

Salut ,
j'ai un autre problème d'établir une connexion SFTP entre un client windows et un serveur SFTP Unix .Pouvez vous m'aider ?
Revenir en haut Aller en bas
Samantha
Rang: Administrateur
Rang: Administrateur
Samantha


Nombre de messages : 1711
Emploi : Informaticienne
Date d'inscription : 28/01/2005

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptyMer 1 Avr - 18:03

inzaghi, il faudrait que tu décrives le problème.
Revenir en haut Aller en bas
inzaghi
Nouveau Membre
Nouveau Membre



Nombre de messages : 5
Age : 36
Date d'inscription : 23/03/2009

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptyMer 1 Avr - 18:27

Samantha a écrit:
inzaghi, il faudrait que tu décrives le problème.
Objectif :
créer un client sftp sous windows pour transférer des fichiers vers un serveur sftp unix

Problème ;
j'ai utiliser plusieurs bibliothèque java tels que j2ssh , trilead , jsch
Mais j'en pas pu réaliser mon objectif
Revenir en haut Aller en bas
inzaghi
Nouveau Membre
Nouveau Membre



Nombre de messages : 5
Age : 36
Date d'inscription : 23/03/2009

[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh EmptySam 4 Avr - 2:44

Voud avez compris mon problème ?
Revenir en haut Aller en bas
Contenu sponsorisé





[Résolu]ssh Empty
MessageSujet: Re: [Résolu]ssh   [Résolu]ssh Empty

Revenir en haut Aller en bas
 
[Résolu]ssh
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» outlook pour HP ipack 6340
» Doublon avec acces

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Section C :: L'entraide Informatique :: Développement et Programmation-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser