You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2020/04/04 23:45:18 UTC

[airavata-mft] branch master updated: Removing private key temp file creation for SSH transport

This is an automated email from the ASF dual-hosted git repository.

dimuthuupe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-mft.git


The following commit(s) were added to refs/heads/master by this push:
     new 6e42fe4  Removing private key temp file creation for SSH transport
6e42fe4 is described below

commit 6e42fe4acf8c143dd0763e962121de77fa66c876
Author: Dimuthu Wannipurage <di...@gmail.com>
AuthorDate: Sat Apr 4 19:45:03 2020 -0400

    Removing private key temp file creation for SSH transport
---
 .../airavata/mft/transport/scp/SCPReceiver.java      | 12 +++---------
 .../apache/airavata/mft/transport/scp/SCPSender.java | 20 ++++++++------------
 .../airavata/mft/transport/scp/SCPTransportUtil.java | 11 +++--------
 3 files changed, 14 insertions(+), 29 deletions(-)

diff --git a/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPReceiver.java b/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPReceiver.java
index 41c01fe..194796a 100644
--- a/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPReceiver.java
+++ b/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPReceiver.java
@@ -53,19 +53,13 @@ public class SCPReceiver implements Connector {
         SecretServiceGrpc.SecretServiceBlockingStub secretClient = SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
         SCPSecret scpSecret = secretClient.getSCPSecret(SCPSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
 
-        File privateKeyFile = File.createTempFile("id_rsa", "");
-        BufferedWriter writer = new BufferedWriter(new FileWriter(privateKeyFile));
-        writer.write(scpSecret.getPrivateKey());
-        writer.close();
-
-        privateKeyFile.deleteOnExit();
-
         this.session = SCPTransportUtil.createSession(
                 scpResource.getScpStorage().getUser(),
                 scpResource.getScpStorage().getHost(),
                 scpResource.getScpStorage().getPort(),
-                privateKeyFile.getPath(),
-                scpSecret.getPassphrase());
+                scpSecret.getPrivateKey().getBytes(),
+                scpSecret.getPublicKey().getBytes(),
+                scpSecret.getPassphrase().equals("")? null : scpSecret.getPassphrase().getBytes());
     }
 
     public void destroy() {
diff --git a/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPSender.java b/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPSender.java
index b8506e8..c4f6280 100644
--- a/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPSender.java
+++ b/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPSender.java
@@ -56,21 +56,17 @@ public class SCPSender implements Connector {
         SecretServiceGrpc.SecretServiceBlockingStub secretClient = SecretServiceClient.buildClient(secretServiceHost, secretServicePort);
         SCPSecret scpSecret = secretClient.getSCPSecret(SCPSecretGetRequest.newBuilder().setSecretId(credentialToken).build());
 
-        File privateKeyFile = File.createTempFile("id_rsa", "");
-        BufferedWriter writer = new BufferedWriter(new FileWriter(privateKeyFile));
-        writer.write(scpSecret.getPrivateKey());
-        writer.close();
-
-        logger.info("Creating a ssh session for {}@{}:{} with key {} and passphrase {}",
+        logger.info("Creating a ssh session for {}@{}:{}",
                 scpResource.getScpStorage().getUser(), scpResource.getScpStorage().getHost(),
-                scpResource.getScpStorage().getPort(),
-                privateKeyFile.getPath(),
-                scpSecret.getPassphrase());
+                scpResource.getScpStorage().getPort());
 
-        this.session = SCPTransportUtil.createSession(scpResource.getScpStorage().getUser(), scpResource.getScpStorage().getHost(),
+        this.session = SCPTransportUtil.createSession(
+                scpResource.getScpStorage().getUser(),
+                scpResource.getScpStorage().getHost(),
                 scpResource.getScpStorage().getPort(),
-                privateKeyFile.getPath(),
-                scpSecret.getPassphrase());
+                scpSecret.getPrivateKey().getBytes(),
+                scpSecret.getPublicKey().getBytes(),
+                scpSecret.getPassphrase().equals("")? null : scpSecret.getPassphrase().getBytes());
     }
 
     public void destroy() {
diff --git a/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPTransportUtil.java b/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPTransportUtil.java
index fd2f4d5..7cf159d 100755
--- a/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPTransportUtil.java
+++ b/transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPTransportUtil.java
@@ -24,22 +24,17 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Properties;
+import java.util.UUID;
 
 public class SCPTransportUtil {
 
     private static final Logger logger = LoggerFactory.getLogger(SCPTransportUtil.class);
 
-    public static Session createSession(String user, String host, int port, String keyFilePath, String keyPassword) throws Exception {
+    public static Session createSession(String user, String host, int port, byte[] pvtKey, byte[] pubKey, byte[] passphrase) throws Exception {
         try {
             JSch jsch = new JSch();
 
-            if (keyFilePath != null) {
-                if (keyPassword != null) {
-                    jsch.addIdentity(keyFilePath, keyPassword);
-                } else {
-                    jsch.addIdentity(keyFilePath);
-                }
-            }
+            jsch.addIdentity(UUID.randomUUID().toString(), pvtKey, pubKey, passphrase);
 
             Properties config = new java.util.Properties();
             config.put("StrictHostKeyChecking", "no");