Jenkins可以使用ssh support socks4代理在远程主机上执行shell脚本吗?

时间:2018-07-02 21:25:36

标签: jenkins proxy jenkins-pipeline socks

由于公司中的某些原因,需要在袜子代理后面的服务器上自动执行几个命令。 到目前为止,我已经通过这种方式在管道中做到了这一点(虽然对我来说这是很新的):

sh'ssh -vvv -t -o StrictHostKeyChecking =否-o ProxyCommand =“ nc -x elki-palki.socks4.chot-b-ego.com:1080%h%p” petya.properdikin@xxx.xxx.xxx.xxx <<-EOF“ pwd \ n /tmp/jenkins/01.sh\n pwd \ n .....” EOF'

是否可以使用SOCKS4代理配置SSH站点以使用常规的Freestyle Jobs? enter image description here

2 个答案:

答案 0 :(得分:0)

this question

很好地解释了管道中的ssh

对于袜子代理,它更为复杂。 在this articleJava docs的基础上,您必须使用一些其他标志来启动Jenkins,以下是文档:

  

袜子   这是另一种代理。它允许较低级别的   隧道,因为它在TCP级别上起作用。实际上,在Java(tm)中   平台设置SOCKS代理服务器将导致所有TCP   通过该代理的连接,除非有其他代理   指定。如果Java SE实施支持SOCKS,则   将使用以下属性:

socksProxyHost (default: <none>)
The hostname, or address, of the proxy server.

socksProxyPort (default: 1080)
The port number of the proxy server.

socksProxyVersion (default: 5)
The version of the SOCKS protocol supported by the server. The default is 5 indicating SOCKS V5, alternatively 4 can be specified for
     

袜子V4。将属性设置为这些值以外的值会导致   未指明的行为。

java.net.socks.username (default: <none>)
Username to use if the SOCKSv5 server asks for authentication and no java.net.Authenticator instance was found.

java.net.socks.password (default: <none>)
Password to use if the SOCKSv5 server asks for authentication and no java.net.Authenticator instance was found.

很可能看起来像这样

java -DsocksProxyHost=some.proxy.host -DsocksProxyPort=1234 -DsocksProxyVersion=4 -jar jenkins.war

取决于您实际启动詹金斯等的方式。

答案 1 :(得分:0)

已解决,只是拒绝使用ssh在远程主机上使用执行shell脚本。而是使用普通的执行外壳。然后,您将不得不在〜/ .ssh / config中或在/ etc / ssh / ssh_config中全局创建ssh_config,然后在其中将信息粘贴到Socks4(或使用的任何代理)中:

Host xxx.xxx.xxx.xxx
    ProxyCommand='nc -x elki-palki.socks.chob-ego.com:1080 %h %p'
    User petya.properdikin
    ForwardAgent yes
    Port 22

然后它应该可以工作(假设ssh密钥设置正确)