[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Need help.
[Thread Prev] | [Thread Next]
- Subject: Re: Need help.
- From: Vic Lee <llyzs@xxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Sun, 13 Sep 2009 17:39:06 +0800
- To: libssh@xxxxxxxxxx
Hi,
I think you will have to program with sockets yourself, that means, you
need to:
1. call socket(),bind(),listen(),etc
2. once connection comes in then call channel_open_forward to get a
ssh_channel
3. running a separated thread (or use select/ssh_select) to transfer
data from the socket to the channel back and fourth.
I have both experience with libssh and libssh2 and basically libssh2
works in exactly the same way.
I don't think a library can do so much things for you, it's your duty to
do the actual tunnelling :)
Vic
On Sun, 2009-09-13 at 13:27 +0400, Taras Halturin wrote:
> thanx for the answer!
>
>
> It is a pity :(. so,if i can't develop second half of the port
> forwarding routines, i'll try to use libssh2. maybe there will be easy
> to develop this feature for me.
>
>
> WBR
>
>
> Taras Halturin.
>
> On Sun, Sep 13, 2009 at 1:14 PM, Aris Adamantiadis <aris@xxxxxxxxxxxx>
> wrote:
> Hello Taras,
>
> I am sorry the documentation let you think it would be so
> easy... In fact channel_open_forward only does half the work,
> this is connecting to a remote host:port from the ssh server
> and stream it into a channel. However the port binding and the
> select loop (to verify if data is arriving and dispatching it)
> is unfortunately up to you.
>
> Looking at the select_loop in sample.c would be a good
> start-up for you, even if we should consider writing a working
> example in the examples directory. The functionnality you
> expected may be available in the 0.5 release.
>
> Andreas, Maybe we should make clear into the documentation
> about what I just stated above. I also only see online
> documentation for the 0.4.0 branch when the stable branch is
> still 0.3.x. Could you have a look ?
> Regards,
>
> Aris
>
> Taras Halturin a écrit :
>
>
> Hi all!
>
> i'm trying to use libssh for the port forwarding and
> it doesnt work for me :(. I need to forward remote
> port to the local host like this:
> ssh -L 22222:localhost:8222 fantom@xxxxxxxxxxxxx
>
> here is the code:
>
> static gboolean
> do_open_channel (gchar *username, gchar *password,
> gchar *remote,
> guint remote_port, guint
> local_port)
> {
> SSH_SESSION *ssh = ssh_new();
> SSH_OPTIONS *opts = ssh_options_new();
> CHANNEL *ch = NULL;
>
> ssh_options_set_port (opts, 22);
> ssh_options_set_host (opts, remote);
> ssh_set_options (ssh, opts);
>
> if (ssh_connect(ssh) != SSH_OK)
> {
> g_warning ("Error at connection :%s
> \n",ssh_get_error (ssh));
> return FALSE;
> }
>
> ssh_is_server_known(ssh);
>
> if (ssh_userauth_autopubkey(ssh) !=
> SSH_AUTH_SUCCESS)
> {
> g_warning ("Authenticating with pubkey: %s
> \n",ssh_get_error(ssh));
> if (ssh_userauth_password (ssh, username,
> password) != SSH_AUTH_SUCCESS)
> {
> g_warning ("Authentication with password failed: %s
> \n",ssh_get_error
> (ssh));
> return FALSE;
> }
> }
>
> ch = channel_new (ssh);
>
> if (channel_open_forward (ch, remote, remote_port,
> "127.0.0.1",
> local_port) != SSH_OK)
> {
> g_warning ("Error when opening forward:%s\n",
> ssh_get_error (ssh));
> return FALSE;
> }
>
> g_debug ("Chanel is forwarded");
>
> return TRUE;
> //channel_close(channel);
> //channel_free(channel);
> //ssh_disconnect(ssh);
> }
>
>
> i'm calling this func with args:
>
> do_open_channel ("fantom","megapass", "myremote.host",
> 8222, 22222);
>
> No errors happend, "Chanel is forwarded" has printed,
> but i can't see the listener on the 22222 port. What
> is wrong? Could somebody help me?
>
> WBR
>
> Taras Halturin.
>
>
>
>
| Re: Need help. | Taras Halturin <halturin@xxxxxxxxx> |
| Re: Need help. | Vic Lee <llyzs@xxxxxxx> |
| Need help. | Taras Halturin <halturin@xxxxxxxxx> |
| Re: Need help. | Aris Adamantiadis <aris@xxxxxxxxxxxx> |
| Re: Need help. | Taras Halturin <halturin@xxxxxxxxx> |