SSH Port Forwarding (Tunneling) in Squeak (was: SSH)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

SSH Port Forwarding (Tunneling) in Squeak (was: SSH)

David Mitchell-10
Picking up an old thread...

Would like to use this to do a port forward. Today, I have a little
Squeak app that talks to a MySQL database on the other side of a
forwarded SSH port. I'm on windows, so I use plink (command line
PuTTY):

C:\bin\plink.exe -ssh -P 22 -l username -pw password -L
3306:mySqlServerIpAddress:3306 -N sslServerIpAddress

(with placeholders for username, password, and the 2 IP addresses)

This works, but I'd like to get an all Squeak solution (easier for me
to deploy). Hopefully easier to keep up (plink goes away
periodically).

I started with:

SSH runBy: 'username' to: 'sslServerIPAddress' port: 22

The first issue was the server wanted a password and I hadn't
specified one. I couldn't find the appropriate place to hook in a
password, so I hardcoded my password into this method:

SSHUserAuthClientWaitingForResponse>>#sendPasswordUserAuthRequest

        | requestMsg |
        requestMsg := SSHUserAuthRequestMessage new
                userName: self connection userName;
                serviceName: 'ssh-connection';
                methodName: 'password';
                subMsg: (SSHUserAuthPasswordRequestSubMessage new
"------>"          password: 'password'; "was  password: self
connection password"
                     yourself);
                yourself.
        self machine sendMsg: requestMsg.

That worked (I get the banner from the server), but I know I need to
find where the connection is set up to provide the password.

Even with that hack in place,I get errors every time I type any
character into the Teletype Morph. I suspect this is because the
server isn't expecting a shell (-N).

So my questions are:
1. Can you use this to forward a port? If so, do you have an example?
2. Where to set password if the server is expecting one (non-interactive).



On Oct 13, 2007 1:48 PM, Robert Withers <[hidden email]> wrote:

> Thanks for the reminder, Lex.  I published the following packages to
> Universes, with dependencies, in the System category:
>         Cryptography Team Package
>         SSL (depends on Cryptography Team Package)
>         SSH (depends on Telnet, Cryptography Team Package, SSL)
> I tested this in my image successfully.  However, my image has two
> fixes applied in order to successfully load Telnet.  I posted these
> fixes in an earlier email in this thread:  1 is new and the other is
> listed somewhere in Mantis.  These need to be applied to the update
> stream to allow forward progress.
>
> BTW, Lex, S/MIME is released in the Crypto Monticello repository and
> I am done with it.  It works with the basic email client.
>
> Cheers,
> Rob
>
>
> On Oct 12, 2007, at 11:26 AM, Lex Spoon wrote:
>
> > Robert Withers <[hidden email]> writes:
> >> This worked for me.  I loaded them from the Monticello repository.  I
> >> haven't yet tried to define the package for Crypto/SSL/SSH and I
> >> probably wont get to it before next week.  I am going on vacation.
> >
> > If there is anything that can be done to make the package-posting
> > process easier, it would be nice to know.  As far as I can tell,
> > though, you open an editor, create an account, and post your package,
> > all using a GUI that is included right in the image.  Ideas for
> > improving it are always welcome, though!
> >
> >
> > Oh, and to second everyone else: ssh in Squeak -- very cool!
> >
> > -Lex
> >
> >
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: SSH Port Forwarding (Tunneling) in Squeak (was: SSH)

Rob Withers
hi David,

> So my questions are:
> 1. Can you use this to forward a port? If so, do you have an example?

You would need to do some work to get this working.   One of the Messages in
the SSH-Messages category would be the thing you are looking for but the
specs could guide you as to which one.  It is probably an
SSHChannelRequestMessage.  You would need to provide the interface on SSH to
implement this and somehow remember to do it after your UserAuth is
completed.  See SSHConnectionPipe>>#makeClient to see what is done for
having an interactive pty.  This implementation is not very flexible for
supporting other types of usage like port forwarding.

> 2. Where to set password if the server is expecting one (non-interactive).

I never finished the non-interactive case.  I was thinking that the
SocketEndpoint could know this (#socket from the perspective of the
SSHUserAuthPipe) and so SSHUserAuthPipe>>#password would grab it from the
socket.

Rob

----- Original Message -----
From: "David Mitchell" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Monday, January 28, 2008 2:17 PM
Subject: SSH Port Forwarding (Tunneling) in Squeak (was: SSH)


> Picking up an old thread...
>
> Would like to use this to do a port forward. Today, I have a little
> Squeak app that talks to a MySQL database on the other side of a
> forwarded SSH port. I'm on windows, so I use plink (command line
> PuTTY):
>
> C:\bin\plink.exe -ssh -P 22 -l username -pw password -L
> 3306:mySqlServerIpAddress:3306 -N sslServerIpAddress
>
> (with placeholders for username, password, and the 2 IP addresses)
>
> This works, but I'd like to get an all Squeak solution (easier for me
> to deploy). Hopefully easier to keep up (plink goes away
> periodically).
>
> I started with:
>
> SSH runBy: 'username' to: 'sslServerIPAddress' port: 22
>
> The first issue was the server wanted a password and I hadn't
> specified one. I couldn't find the appropriate place to hook in a
> password, so I hardcoded my password into this method:
>
> SSHUserAuthClientWaitingForResponse>>#sendPasswordUserAuthRequest
>
> | requestMsg |
> requestMsg := SSHUserAuthRequestMessage new
> userName: self connection userName;
> serviceName: 'ssh-connection';
> methodName: 'password';
> subMsg: (SSHUserAuthPasswordRequestSubMessage new
> "------>"          password: 'password'; "was  password: self
> connection password"
>                     yourself);
> yourself.
> self machine sendMsg: requestMsg.
>
> That worked (I get the banner from the server), but I know I need to
> find where the connection is set up to provide the password.
>
> Even with that hack in place,I get errors every time I type any
> character into the Teletype Morph. I suspect this is because the
> server isn't expecting a shell (-N).
>
> So my questions are:
> 1. Can you use this to forward a port? If so, do you have an example?
> 2. Where to set password if the server is expecting one (non-interactive).
>
>
>
> On Oct 13, 2007 1:48 PM, Robert Withers <[hidden email]> wrote:
>> Thanks for the reminder, Lex.  I published the following packages to
>> Universes, with dependencies, in the System category:
>>         Cryptography Team Package
>>         SSL (depends on Cryptography Team Package)
>>         SSH (depends on Telnet, Cryptography Team Package, SSL)
>> I tested this in my image successfully.  However, my image has two
>> fixes applied in order to successfully load Telnet.  I posted these
>> fixes in an earlier email in this thread:  1 is new and the other is
>> listed somewhere in Mantis.  These need to be applied to the update
>> stream to allow forward progress.
>>
>> BTW, Lex, S/MIME is released in the Crypto Monticello repository and
>> I am done with it.  It works with the basic email client.
>>
>> Cheers,
>> Rob
>>
>>
>> On Oct 12, 2007, at 11:26 AM, Lex Spoon wrote:
>>
>> > Robert Withers <[hidden email]> writes:
>> >> This worked for me.  I loaded them from the Monticello repository.  I
>> >> haven't yet tried to define the package for Crypto/SSL/SSH and I
>> >> probably wont get to it before next week.  I am going on vacation.
>> >
>> > If there is anything that can be done to make the package-posting
>> > process easier, it would be nice to know.  As far as I can tell,
>> > though, you open an editor, create an account, and post your package,
>> > all using a GUI that is included right in the image.  Ideas for
>> > improving it are always welcome, though!
>> >
>> >
>> > Oh, and to second everyone else: ssh in Squeak -- very cool!
>> >
>> > -Lex
>> >
>> >
>>
>>
>>
>
>