我正在尝试调试由于SSH权限问题而导致失败的Jenkins Plugin。基本上,插件允许我从主机SSH到从机上的特定Jenkins构建,但由于某种原因,它在我试图使用它的系统上失败。
执行时,插件告诉我,我可以使用类似以下命令的东西从主机连接到从属构建中:
ssh.config
Host=*.localhost
Port=43689
ProxyCommand=ssh -p 43689 localhost diagnose-tunnel -suffix .localhost %h
命令:
ssh -F ssh.config Test.localhost
这适用于我设置的测试系统(使用两台计算机),但在生产环境中失败,错误 Permission denied(publickey)。
虽然我当然愿意自己调试权限问题,但我对这个ssh命令的工作原理感到困惑:/它究竟要做什么?我研究了这个问题,但我仍然对如何使用代理命令感到困惑。
我想它连接到localhost(jenkins主机)中的某个自定义端口,但是这怎么会让我ssh到slave机器?为了便于阅读,可以将此命令重写为一行吗?什么可能导致权限被拒绝错误?
感谢您的帮助!我想这可能是一个非常简单的问题,但我是SSH的新手,我仍在努力理解它:)
更新
根据要求输出ssh -vF test_ssh <job>.<host>
! ^^(将作业和主机替换为标签以便于阅读)
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data test_ssh
debug1: Applying options for *.<host>
debug1: Executing proxy command: exec ssh -p 44078 <host> diagnose-tunnel -suffix .<host> <job>
debug1: permanently_drop_suid: 497
debug1: identity file /var/lib/jenkins/.ssh/identity type -1
debug1: identity file /var/lib/jenkins/.ssh/identity-cert type -1
debug1: identity file /var/lib/jenkins/.ssh/id_rsa type 1
debug1: identity file /var/lib/jenkins/.ssh/id_rsa-cert type -1
debug1: identity file /var/lib/jenkins/.ssh/id_dsa type -1
debug1: identity file /var/lib/jenkins/.ssh/id_dsa-cert type -1
debug1: identity file /var/lib/jenkins/.ssh/id_ecdsa type -1
debug1: identity file /var/lib/jenkins/.ssh/id_ecdsa-cert type -1
Permission denied (publickey).
ssh_exchange_identification: Connection closed by remote host
答案 0 :(得分:0)
你的ssh.config也应包含类似
的内容User USERNAME
PubKeyAuthentication yes
IdentityFile /path/to/key
其中USERNAME
是允许连接到您的prod服务器的实际用户,/path/to/key
是他们的私有密钥,在此之前您应该已经完成
ssh-copy-id -i /path/to/key.pub SERVER
其中SERVER是你的prod主机
答案 1 :(得分:0)
我有同样的问题..
现在,我会试着回答你。
它到底想要做什么?
ssh -p <port> <server> diagnose-tunnel -suffix .<server> %h
diagnose-tunnel -suffix .<server> %h
是在<server>:<port>
上执行的命令。据我了解,这是詹金斯&#39;特定命令,有助于与从节点建立连接。
许可被拒绝(公钥)。
有解决方案可以帮助我:
ssh-keygen
; <jenkins_server>
:8080 /用户/ <jenkins_user_name>
/配置); 修改~/.ssh/config
文件:您应该将 jenkins_user_name
添加到ProxyCommand
行:
ProxyCommand ssh -p <port> <jenkins_user_name>@<jenkins_server> diagnose-tunnel -suffix .<jenkins_server> %h
还需要添加User <jenkins_user_name>
和IdentityFile /path/to/private_key
如何编写@sotona