Я пытаюсь подключиться к подчиненному узлу с помощью метода запуска: "Запуск подчиненного устройства путем выполнения команды на главном компьютере".
Это команда запуска, которую я использую:
ssh -vvvA user@host java -jar /tmp/java/slave.jar
Обычно я могу сделать ssh для хоста, как: -
ssh -A user@host
И это работает, потому что мои ключи можно увидеть в ssh-add
output
Но, в случае с дженкинсами, он каким-то образом не использует ключи, присутствующие в ssh-add
. Я не могу перенаправить свой ssh-агент, как видно из текста, выделенного жирным шрифтом, в ошибке ниже:
Это подробная ошибка, которую я получаю: -
[03/14/14 19:02:36] Launching slave agent
$ ssh -vvvA user@host java -jar /tmp/java/slave.jar
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 50: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to host [x.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /Users/user/.ssh/identity type -1
debug1: identity file /Users/user/.ssh/identity-cert type -1
debug1: identity file /Users/user/.ssh/id_rsa type -1
debug1: identity file /Users/user/.ssh/id_rsa-cert type -1
debug1: identity file /Users/user/.ssh/id_dsa type -1
debug1: identity file /Users/user/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 1.99, remote software version Server-VII-hpn13v1
debug1: no match: Server-VII-hpn13v1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "x.x.x.x" from file "/Users/user/.ssh/known_hosts"
debug3: load_hostkeys: found key type DSA in file /Users/user/.ssh/known_hosts:28
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-dss,[email protected],[email protected],ssh-rsa
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-dss
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 127/256
debug2: bits set: 527/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: DSA ee:33:bd:ac:7b:6e:bd:0b:60:6e:49:20:56:cb:00:d3
debug3: load_hostkeys: loading entries for host "x.x.x.x" from file "/Users/user/.ssh/known_hosts"
debug3: load_hostkeys: found key type DSA in file /Users/user/.ssh/known_hosts:28
debug3: load_hostkeys: loaded 1 keys
debug1: Host 'x.x.x.x' is known and matches the DSA host key.
debug1: Found key in /Users/user/.ssh/known_hosts:28
debug2: bits set: 500/1024
debug1: ssh_dss_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /Users/user/.ssh/identity (0x0),
debug2: key: /Users/user/.ssh/id_rsa (0x0),
debug2: key: /Users/user/.ssh/id_dsa (0x0),
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
**debug1: Trying private key: /Users/user/.ssh/identity
debug3: no such identity: /Users/user/.ssh/identity: No such file or directory
debug1: Trying private key: /Users/user/.ssh/id_rsa
debug3: no such identity: /Users/user/.ssh/id_rsa: No such file or directory
debug1: Trying private key: /Users/user/.ssh/id_dsa
debug3: no such identity: /Users/user/.ssh/id_dsa: No such file or directory
debug2: we did not send a packet, disable method**
debug1: No more authentication methods to try.
Permission denied (publickey).
ERROR: Unable to launch the slave agent for x.x.x.x
java.io.EOFException: unexpected stream termination
at hudson.remoting.ClassicCommandTransport.create(ClassicCommandTransport.java:135)
at hudson.remoting.Channel.<init>(Channel.java:406)
at hudson.remoting.Channel.<init>(Channel.java:402)
at hudson.remoting.Channel.<init>(Channel.java:363)
at hudson.remoting.Channel.<init>(Channel.java:359)
at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:346)
at hudson.slaves.CommandLauncher.launch(CommandLauncher.java:122)
at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:230)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
С моего сервера jenkins: -
[email protected]:$ echo $SSH_AUTH_SOCK
/tmp/launch-52rSLt/Listeners
Я выполнил все вопросы по stackoverflow, а также нашел этот URL (https://help.github.com/articles/using-ssh-agent-forwarding) в одном из вопросов, но до сих пор все не работает
Пожалуйста, расскажите мне, где я делаю неправильно.
благодаря
Убедитесь, что мастер Jenkins имеет доступ к агенту ssh (который имеет переменную среды SSH_AUTH_SOCK).
Вы можете увидеть это на странице $ JENKINS_URL/systemInfo в разделе "Переменные среды",
Если мастер не видит сокет агента ssh, он не может его использовать. Я подозреваю, что у мастера нет этого, но причина зависит от того, как именно вы установили и запустили Jenkins и на какой платформе. Пожалуйста, предоставьте дополнительную информацию о вашей настройке, если вам нужна дополнительная помощь.
SSH_AUTH_SOCK
содержит имя сокета для использования для связи с агентом SSH для текущего пользователя. Он не должен быть одинаковым для разных систем или для разных пользователей в одной и той же системе. Однако, если SSH_AUTH_SOCK
не установлен, это означает, что ssh
не сможет поговорить с агентом.
Обычно Jenkins работает как пользователь jenkins
и неудивительно, что у него нет доступа к другим пользовательским ключам. Дайте SSH Agent Plugin попробовать и посмотрите, работает ли это для вас.
~jenkins/.ssh/
без пароля.