Jenkins Windows slave via openssh 无法启动



我正在尝试将Windows代理连接到jenkins,但没有运气。我正在使用打开的 ssh,目前在设置过程中没有验证。当我启动代理时,Jenkins 可以访问它,它将 remote.jar 放在请求的文件夹中,但它仍然在启动代理时出现问题。我没有得到任何错误描述

SSHLauncher{host='NLQA1', port=22, credentialsId='10314a78-c648-4891-aa78-c5510875e8e7', jvmOptions='', javaPath='c:/jenkins2/jdk/bin/java.exe', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=210, maxNumRetries=10, retryWaitTime=15, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.NonVerifyingKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true}
[06/20/19 13:36:26] [SSH] Opening SSH connection to NLQA1:22.
[06/20/19 13:36:27] [SSH] WARNING: SSH Host Keys are not being verified. Man-in-the-middle attacks may be possible against this connection.
[06/20/19 13:36:28] [SSH] Authentication successful.
[06/20/19 13:36:28] [SSH] The remote user's environment is:
ALLUSERSPROFILE=C:ProgramData
APPDATA=C:UsersAdminAppDataRoaming
CommonProgramFiles=C:Program FilesCommon Files
CommonProgramFiles(x86)=C:Program Files (x86)Common Files
CommonProgramW6432=C:Program FilesCommon Files
COMPUTERNAME=NLQA1
ComSpec=C:WINDOWSsystem32cmd.exe
DriverData=C:WindowsSystem32DriversDriverData
GIT_SSH=C:Program FilesTortoiseGitbinTortoisePLink.exe
HOMEDRIVE=C:
HOMEPATH=UsersAdmin
ICU_DATA=c:Usd91BIN
LOCALAPPDATA=C:UsersAdminAppDataLocal
NUMBER_OF_PROCESSORS=2
OneDrive=C:UsersAdminOneDrive
OS=Windows_NT
Path=C:appclientAdminproduct12.1.0client_1bin;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:WINDOWSSystem32OpenSSH;C:Program FilesGitcmd;C:Program FilesTortoiseGitbin;C:WINDOWSsystem32configsystemprofileAppDataLocalMicrosoftWindowsApps;c:Gnuwin32;C:UsersAdminAppDataLocalMicrosoftWindowsApps;C:App;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 63 Stepping 2, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=3f02
ProgramData=C:ProgramData
ProgramFiles=C:Program Files
ProgramFiles(x86)=C:Program Files (x86)
ProgramW6432=C:Program Files
PROMPT=Admin@Domain@NLQA1 $P$G
PSModulePath=C:Program FilesWindowsPowerShellModules;C:WINDOWSsystem32WindowsPowerShellv1.0Modules
PUBLIC=C:UsersPublic
SSH_CLIENT=172.x.x.x 63458 22
SSH_CONNECTION=172.x.x.x 63458 172.x.x.x 22
SystemDrive=C:
SystemRoot=C:WINDOWS
TEMP=C:TEMP
TMP=C:TEMP
USERDOMAIN=Domain
USERNAME=Admin@Domain
USERPROFILE=C:UsersAdmin
windir=C:WINDOWS
[06/20/19 13:36:28] [SSH] Starting sftp client.
[06/20/19 13:36:28] [SSH] Copying latest remoting.jar...
Source agent hash is D2D1A740134BD20D6F0855B356344342. Installed agent hash is D2D1A740134BD20D6F0855B356344342
Verified agent jar. No update is necessary.
Expanded the channel window size to 4MB
[06/20/19 13:36:29] [SSH] Starting agent process: cd "c:/jenkins2" && c:/jenkins2/jdk/bin/java.exe  -jar remoting.jar -workDir c:/jenkins2
Slave JVM has terminated. Exit code=0
[06/20/19 13:36:29] Launch failed - cleaning up connection
[06/20/19 13:36:29] [SSH] Connection closed.

代理正在运行带有 eclipsej9 的 adoptopenjdk 11,Slave JVM has terminated. Exit code=0是我从 Jenkins 获得的所有信息。如果我 rdp 连接到机器并手动执行c:/jenkins2/jdk/bin/java.exe -jar remoting.jar -workDir c:/jenkins2,我可以运行代理,所以并不是说 jar 根本无法启动。jnlp 也在工作,但我想使用 ssh 路由。您是否知道出了什么问题,或者我必须做什么才能获得有关失败发射的更多信息?

我在ssh-slaves-plugin git存储库中找到了答案。我会在这里引用它,以便将来会在这里。


使用 OpenSSH 启动 Windows 从属Microsoft

当前版本的插件不直接在PowerShell上运行,您必须使用前缀和后缀设置来欺骗命令并使其工作,Windows 10计算机可以使用Microsoft OpenSSH服务器作为SSH代理运行:

前缀启动代理命令

powershell -Command "cd C:JS ; C:JSjdkbinjava.exe -jar remoting.jar" ; exit 0 ; rem '

后缀启动代理命令

'

编辑16-08-2019
在机器上安装Windows更新后,我不得不将前缀更改为
powershell -Command "cd C:JS ; C:JSjdkbinjava.exe -jar remoting.jar" ; exit 0 ; # '
rem更改为#使其再次工作。我得到的错误是:

The string is missing the terminator: '.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

看起来它是&&运算符。 简单示例
powershell -Command "cd c:/" ; exit 0 ; rem 'cd && echo "abc"'


添加前缀和后缀为 my 修复了它。如果有人知道为什么将其包装在另一个 powershell 命令中可以使其工作,请随时详细说明。

最新更新