[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to create scp server


I need a simple functionality of scp.
I've got some progress with a file reading on server.
I've opened a channel and then I've done this:
...
std::vector<std::string> execParams;
do
{
        message = ssh_message_get(session);
        if (ssh_message_type(message) == SSH_REQUEST_CHANNEL &&
ssh_message_subtype(message) == SSH_CHANNEL_REQUEST_EXEC)
        {
            std::string command(message->channel_request.command);
            execParams = string_split(command, " ");
            if (!execParams.empty() && execParams[0] == "scp")
            {
                ssh_message_channel_request_reply_success(message);
                ssh_message_free(message);
                scpSession = true;
                break;
            }
         }
} while (!scpSession);
if (scpSession)
{
        if (execParams[1] == "-t")
        {
            // this is "write" of a client
            scpMode = SSH_SCP_READ;

            ssh_channel_write(chan, "", 1);
        }
        else if (execParams[1] == "-f")
        {
            // this "read" of a client
            scpMode = SSH_SCP_WRITE;
        }
        scp = ssh_scp_new(session, scpMode, "D:/test/scp");
        //using already oned channel
        scp->channel = chan;
        if (scp->mode == SSH_SCP_WRITE)
            scp->state = SSH_SCP_WRITE_INITED;
        else
            scp->state = SSH_SCP_READ_INITED;

        bool exit = false;
        char buffer[16384];
        do {
            int r = ssh_scp_pull_request(scp);
            ...
        }
}
It's working only for client write operations and need improving but am I
moving in right direction?

Also is there any example of how to create sftp server?

2015-07-08 18:56 GMT+03:00 Andreas Schneider <asn@xxxxxxxxxxxxxx>:

> On Wednesday 08 July 2015 16:05:11 Игорь Коваленко wrote:
> > Hello!
> >
> > I need to create ssh server with scp functionality but I can't find any
> > examples. How should I handle scp request and initialize new scp session?
>
> Why don't you use sftp?
>
> --
> Andreas Schneider                   GPG-ID: CC014E3D
> www.cryptomilk.org                asn@xxxxxxxxxxxxxx
>
>
>

References:
how to create scp serverИгорь Коваленко <igor.a.kovalenko@xxxxxxxxx>
Re: how to create scp serverAndreas Schneider <asn@xxxxxxxxxxxxxx>
Archive administrator: postmaster@lists.cynapses.org