繁体   English   中英

SSH - 帮助理解代理命令

[英]SSH - Help understanding proxy command

我正在尝试调试由于SSH权限问题而似乎失败的Jenkins插件 基本上,插件允许我从主机SSH到从机上的特定Jenkins构建,但由于某种原因,它在我试图使用它的系统上失败。

执行时,插件告诉我,我可以使用类似以下命令的东西从主机SSH连接到slave构建:

ssh.config

Host=*.localhost
Port=43689
ProxyCommand=ssh -p 43689 localhost diagnose-tunnel -suffix .localhost %h

命令:

ssh -F ssh.config Test.localhost

这可以在我已经设置(使用两台机器)的测试系统上运行,但是在生产环境中会失败,并显示错误PermissionPermission(publickey)

虽然我当然愿意自己调试权限问题,但是我对这个ssh命令的工作方式感到很困惑:/它到底想做什么? 我研究了这个问题,但我仍然对如何使用proxy命令感到困惑。

我想象它连接到本地主机(jenkins主计算机)中的某些自定义端口,但是这将如何允许我SSH进入从计算机? 为了便于阅读,可以将此命令重写为一行吗? 什么可能导致权限被拒绝错误?

谢谢你的帮助! 我想这可能是一个非常简单的问题,但我是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

您的ssh.config还应该包含类似

User USERNAME
PubKeyAuthentication yes
IdentityFile /path/to/key

其中USERNAME是允许连接到产品服务器的实际用户, /path/to/key是他们的私钥 ,在此之前,您应该已经完成

ssh-copy-id -i /path/to/key.pub SERVER

SERVER是您的产品主机

我遇到了同样的问题..

现在,我会尽力回答你。

它到底想做什么?

ssh -p <port> <server> diagnose-tunnel -suffix .<server> %h

diagnose-tunnel -suffix .<server> %h是在<server>:<port>上执行的命令。 据我了解,正是詹金斯的特定命令有助于建立与从属节点的连接。

权限被拒绝(publickey)。

有解决方案可以帮助我:

  1. 通过ssh-keygen生成私钥和公钥;
  2. 将公钥(id_rsa.pub)复制到您的用户设置(http:// <jenkins_server> :8080 / user / <jenkins_user_name> / configure);
  3. 编辑~/.ssh/config文件:你应该将jenkins_user_name添加到ProxyCommand行:

    ProxyCommand ssh -p <port> <jenkins_user_name>@<jenkins_server> diagnose-tunnel -suffix .<jenkins_server> %h

  4. 另外还需要添加User <jenkins_user_name>IdentityFile /path/to/private_key如何编写@sotona

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM