parallec icon indicating copy to clipboard operation
parallec copied to clipboard

About SSH ProxyCommand supported.

Open sizeoftank opened this issue 8 years ago • 3 comments

Sometimes I want to using ssh Proxy Command to execute tasks on many servers. Is there any plan to support this feature

sizeoftank avatar Jul 19 '16 01:07 sizeoftank

Hi @sizeoftank

thanks for your interests in Parallec. Do you mean using proxy in ssh such as this example?

session.setProxy(new ProxyHTTP(proxy_host, proxy_port));

If yes, then it should not be hard by passing a set of parameters, would be super nice if you can fork and make a contribution similar to this pull request.

jeffpeiyt avatar Jul 19 '16 05:07 jeffpeiyt

Hi, thanks for your response. I think it is a bit difference between HTTP proxy think about we want to execute df -h on target host 172.16.16.50 through a jump host 172.16.16.10 , a simple way is execute ssh 172.16.16.50 "df -h" on host 172.16.16.10 like that in parallec:

        pc.prepareSsh().setConcurrency(500)
                .setTargetHostsFromString("172.16.16.10")
                .setSshCommandLine("ssh 172.16.16.50 \"df -h; ds;\" ").setSshUserName(userName)
                .setSshPassword(passwd).setSshConnectionTimeoutMillis(5000)

And using ProxyComand is another way to this It is just a configuration of ssh client ( like our setSshConnectionTimeoutMillis ), and if I using paramiko or ansible (python libraries) , they supported these.

So I suppose that we need to implement these configurations

        pc.prepareSsh().setConcurrency(500)
                .setTargetHostsFromString("172.16.16.50")
                .setSshCommandLine("df -h; ds; ").setSshUserName(userName)
                .setSshPassword(passwd).setSshConnectionTimeoutMillis(5000)
                .setProxyCommand("ssh [email protected] -p 22 nc %h %p")
                .setIdentityFileForProxyCommand("keyfile")

I will fork your repository to do some trial :-)

sizeoftank avatar Jul 19 '16 13:07 sizeoftank

@sizeoftank

Thanks for your clarification. If you are using jump host, probably could follow this example to enhance it.

As parallec uses Jsch, the features supported by Jsch would be easy to support by adding those parameters.

jeffpeiyt avatar Jul 19 '16 17:07 jeffpeiyt