2016-10-29 3 views
0

公開鍵/秘密鍵ベースの認証を使用してSSH経由でリモートクエリを実行しようとしています。次のコマンドはうまく動作し、ローカルホストとリモートサーバーの間で公開鍵を共有した後、bashシェルに必要な出力を文字列として返します。JAHを使用してSSHに文字列をエコーする方法

echo 123456 [email protected]:14 ABCD abc1234 | ssh -T [email protected] 

どのように私はJSCHまたはSSHJを使用してJavaで同じことを実現するか、または他の同様のライブラリ

これは私がSSHJを使用して、これまでにしようとしているものですが、それは(接続が成功した私のために動作しませんでしたが、コードの下に何も結果)

public static void main(String... args)throws IOException { 
    final SSHClient ssh = new SSHClient(); 
    ssh.loadKnownHosts(); 

    ssh.connect("abc.xyz.com"); 
    try { 
     ssh.authPublickey("user"); 
     final Session session = ssh.startSession(); 
     try { 
      final Command cmd = session.exec("123456 [email protected]:14 ABCD abc1234"); 
      System.out.println(IOUtils.readFully(cmd.getInputStream()).toString()); 
      cmd.join(5, TimeUnit.SECONDS); 
      System.out.println("\n** exit status: " + cmd.getExitStatus()); 
     } finally { 
      session.close(); 
     } 
    } finally { 
     ssh.disconnect(); 
     ssh.close(); 
    } 
} 
+0

いくつかのコードを表示してください...あなたは何の問題に直面していますか? – Abhishek

+0

"SSH_を介してリモートクエリを実行する"。 _whatサービスへのリモートクエリ_ですか? –

+0

サーバー側でどのサービスが実行されているのかわかりませんが、アクセスできません。上記のコマンドをシェルで実行すると、必要な出力が得られます。 JSCHまたはSSHJを使ってjavaから同じものを実行する方法があるので、jarライブラリファイルに変換することができます – Dileep

答えて

0

ないJSCHライブラリを使用していますし、私の終わりに取り組んでいる: -

 JSch jsch = new JSch(); 

     String path = "PATH TO PRIVATE KEY"; 

     jsch.addIdentity(path); 

     jsch.setConfig("StrictHostKeyChecking", "no"); 

     Session session = jsch.getSession(userName, ipToConnect, portToConnect); 
     session.connect(); 

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

     ((ChannelExec)channel).setCommand("COMMAND TO FIRE"); 

     channel.setInputStream(null); 

     ((ChannelExec)channel).setErrStream(System.err); 

     InputStream in = channel.getInputStream(); 

     channel.connect(); 

     //Read Response Here 

     channel.disconnect(); 
     session.disconnect(); 

注:JSCHのキーベースの代わりにパスワードベースの認証を使用することもできます

関連する問題