[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[dsdp-tm-dev] RE: SSH tunneling & port forwarding
|
Title: rseserver-2.0-unix.tar
Hi Patrick,
I'm not clear whether you would want to hide the fact from
the
user that a tunnel is used, or you want to make it
explicit.
Consequently, I see two
possibilities:
a) Make it explicit:
* Create new systemType
"SSH-With-Tunnel"
* Register a newConnectionWizard against
it
* Wizard has a single page, allowing
user to select the port
--> E.g. a Listbox
of ports with associated remote host
--> User can pick a
port+host or probably create new one
* Once a port is picked, the wizard
configures the existing
unchanged SSH
Subsystems with the proper port and
instantiates them. See
org.eclipse.rse.discovery for how
to do that
programmatically.
* You'll probably also have to implement
a mountPathMappers
extension in order to
fix remote editing, since all your tunneled
connections will have a host
name "localhost" but with different
ports.
b) Hide tunneling from the user:
* Create new systemType
"SSH-With-Tunnel"
--> User will enter
normal remote hostname
* Create "SSHTunneled" SubSystem, same as
SSHSubSystem,
but with
getConnectorService() returning your own
TunneledSshConnectorService
* TunneledSshConnectorService implementation
takes the
remote hostname, looks up
matching port etc. and returns
proper session to
clients.
In case of (a) you implement your own wizard, similar to
what you
already see in org.eclipse.rse.discovery. In case of (b)
you only
implement your own
TunneledSshConnectorService.
Which option would you like?
Cheers,
Martin
Hello
Martin,
I have
been working in the implementation of the SSH tunnel utility I mentioned.
I
would like to know if you could help my understanding in order to
do the following:
I want
to create a new subsystem which would be used to explore remote systems. I want
it to be indentical to an Sftp subsystem with the little variation that a
port should be chosen when creating the connection using this subsystem. This
port should be retrieved form my ssh tunnel plugin which stores all active
tunnel by their local port number (forwarded port) as they are unique. This
would allow to retrieve the ip adress of the corresponding remote
system to which the port is forwarded to and create a connection with the name
of the target (optional).
In
fact I think reusing the existing Sftp subsystem with a modified
property page would do the trick.
I get in troubles when starting to develop this despite
the many different tutorials are available on the web. I believe some
are out of date because the code used sometimes does not correspond. I have been
through the "Building Tools on the Target Management RSE Framework" as
well.
From
what I understand so far:
-subsystemConfiguration extension point
will be used to register the new subsystem, give it a nice look and make it
available under corresponding systemTypes
-the corresponding
xxxFileSubSystemConfiguration class should describe the subsystem
factory
-Then comes, in the case of Sftp, the two
classes describing the configuration, SftpFileAdapter and
SftpRemoteFile.
I have
succesfully reused the code from the Sftp file subsystem in order to create my
own. It works fine despite the many accessibility warnings.
I am
not sure where the port selection should come into the picture nor how I give
this specific subsystem a property page of its own. Would it be a better
solution to use the newConnectionWizard extension point in order to fully
customize a wizard where the port would be the connection creation basis instead
of the ip adress for the remote system (fixed to localhost in this
case).
Looking back, is creating a subsystem even necessary? Maybe just
accessing the configuration to insert the port value from the connection wizard
would do?
I
believe I lost a little focus while working on this and I got a little confused
on how to approach this problem. I hope, I am not too far off the point, if
so please help get back on track.
Thank
you,
Best Regards,
Patrick Juhl
Hello Patrick,
thanks for your suggestion!
Your contribution would be greatly welcome, and using JSch
is just
fine because we use it ourselves in RSE
already.
I suggest we continue this discussion on the relevant
bug:
As you see there, an Open Source tool for port forwarding
already
exists, but we cannot include it directly since it is under
GPL. So,
if you could make your contribution under the EPL that
would be
just great!
I'd also suggest that we package your tool such that it can
also
run standalone without RSE.
If you need any help on making this happen, please let me
know.
Looks like your first step will be getting permission from
Ericsson
to contribute the code under the EPL.
Thanks!
Martin
Hi
again!
First
of all I would like to mention how usefull and well designed i find the RSE
plugin of which I make extensive use.
I am
writing to you because I would like to make a contribution
regarding an SSH tunnel & port forwarding utility. For the solution I
work on I needed such a tool and ended up developing it myself. I hope I could
contribute in some way by sharing some knowledge.
I
unfortunately did not design my code to work directly with RSE but rather as an
external plugin. Also, the code I wrote contains Ericsson sensitive information
and cannot be shared as such. Let me know if you still need a solution for this
and I will find some time to make a version i can send. However
the implementation is rather simple and uses JSch, a
java implementation of SSH, for the creating the port forwarding. Please
find more info on the following link:
From
this, it is very straightforward to build an Eclipse tool for port
forwarding using the "-L" option of the SSH command. Examples are provided
on how to use it in the downloadable package.
I
didn't go that much into the source of RSE so unfortunately I don't know how
usefull this would be. But in any case, this is a good starting point for
creating such a utility.
Let me
know if you need more information.
Best
regards,
Patrick Juhl
From: Oberhuber, Martin
[mailto:Martin.Oberhuber@xxxxxxxxxxxxx]
Sent: Thursday, October 18,
2007 7:50 PM
To: Patrick Juhl
Subject: RE:
rseserver-2.0-unix.tar
Hello Patrick -
thanks for this patch, this is definitely helpful
!
My only problem is, that for legal reasons I can only
accept community
contributions that are submitted through bugzilla. Could
you go and
attach your contribution on bug 164300
?
Because by doing so, we get your code under the Eclipse
Terms of Use.
We'll also need a comment like the following from you on
the bugzilla item:
Legal Message: I, {name},
declare that I developed attached code from scratch, without referencing any 3rd
party materials except material licensed under the EPL. {I am authorized by my
employer to make this contribution under the EPL.}
See also
You can submit the server.sh script as you have it, but
ideally you'd submit
it as a patch. To do so,
1.) File > Import > Team > Project Set the
TM Project Set from
2.) Edit the file, it's checked in
at
/org.eclipse.rse.services.dstore/serverruntime/scripts/unix/server.sh
3.) Team > Create Patch...
Hi!
I just stumble uppon Bug#: 164300.
I also went through the discussion at http://dev.eclipse.org/newslists/news.eclipse.dsdp.tm/msg00240.html.
A quick fix for the Server.sh file and in order to
allow port selection, change the code to the following:
#!/bin/sh
#*******************************************************************************
# Copyright (c) 2005, 2006 IBM
Corporation, Wind River Systems, Inc. and others.
# All rights reserved. This program and the
accompanying materials
# are made
available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is
available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# IBM
Corporation - initial API and implementation
# Martin Oberhuber (Wind River) - Fix for solaris
(Bourne Shell export statement)
#*******************************************************************************
# Shell script to start an RSE
communications server
# This script
will start the datastore server listening on an available socket
serverpath=.;
CLASSPATH=.:dstore_extra_server.jar:dstore_core.jar:dstore_miners.jar:clientserver.jar:$CLASSPATH;
export serverpath CLASSPATH
if [ $1
]
then java
-DA_PLUGIN_PATH=$serverpath -DDSTORE_TRACING_ON=false -Dclient.username=$1
-DDSTORE_SPIRIT_ON=true org.eclipse.dstore.core.server.Server $1
&
else java -DA_PLUGIN_PATH=$serverpath
-DDSTORE_TRACING_ON=false -DDSTORE_SPIRIT_ON=true
org.eclipse.dstore.core.server.Server 0 60000 &
Fi
By the way, where should I redirect my
questions regarding the use of RSE?
I hope this was helpful!
Best regards,
Patrick Juhl