一个用于多个Ubuntu服务器+ Windows + Teamcity的SSH密钥

我想使用相同的SSH密钥来访问多个Ubuntu服务器。 原因是我想通过CI服务器在DEV,STAGING,PROD,LOCAL环境中部署我们的应用程序。 我们在这些环境中使用Ubuntu服务器。 技术负责人要求我生成一个密钥,并将其用于所有服务器,以便于持续集成。

我们使用Teccity作为CI,Teamcity服务器及其代理运行在同一台Windows服务器上。

我在一台服务器(LOCAL服务器)中生成了id_rsa和id_rsa.pub密钥对。

下一步是将id_rsa.pub复制到所有其他服务器,并将id_rsafile upload到Teamcity服务器。

我认为从现在开始Teamcity服务器有id_rsa键,它应该能够SSH服务器到SSH服务器并通过SSH Exec(Deployer插件)发出命令。

有人能从SSH的关键angular度告诉我,我所做的和迄今为止所做的是正确的吗? 远程服务器是Ubuntu,客户端(TeamCity服务器)是Windows服务器。

正如我上面所描述的,我尝试连接到我从城市服务器生成密钥的服务器。 我这种情况下,我上传了id_rsa到teamcity服务器,并尝试连接。 我给了以下作为id_rsa文件的path。 我确认该文件实际上位于以下位置:

E:\BuildServerConfig\config\projects\MyProject\pluginData\ssh_keys其中E:\BuildServerConfig是数据目录。

但是我得到了以下错误

com.jcraft.jsch.JSchException:java.io.FileNotFoundException:E:\ BuildServerConfig \ config \ projects \ MyProject \ pluginData \ ssh_keys(系统找不到指定的path)

我知道path是可选的,当我删除path它给了以下错误

意外的错误:java.lang.IllegalArgumentException:jetbrains的@NotNull参数'path'/ buildServer / util / FileUtil.resolvePath的参数不能为空

请问一些请赐教在这?

我对Teamcity一无所知,并会推迟Catbird55关于服务器的答案。 但是,在Ubuntu方面,仅仅将id_rsa.pub文件复制到远程服务器是不够的。 您需要确定Teamcity将用于连接到服务器的用户标识,然后将id_rsa.pub的内容添加到该用户的authorized_keys中:

 cat /path/to/id_rsa.pub >> ~teamcityuser/.ssh/authorized_keys 

如果authorized_keys不存在,可能会设置一些权限:

 chown teamcityuser ~teamcityuser/.ssh/authorized_keys chmod 600 ~teamcityuser/.ssh/authorized_keys 

有人能从SSH的关键angular度告诉我,我所做的和迄今为止所做的是正确的吗?

我觉得有一个问题。

你说path是可选的。 Java应用程序需要一个文件在这里:

E:\ BuildServerConfig \设置\项目\ MyProject的\ pluginData \ ssh_keys

但是这个post的读者不知道这里是否有副本。 你说你把这个文件放在这里:

E:\ BuildServerConfig \设置\项目\ MyProject的\ pluginData \ ssh_keys

我会做两件事情之一:

1)可以修改代码来寻找“MyProject的子文件夹pluginData而不是BeyondBank的pluginData?如果不是,使用选项2:2)ssh_keys文件可以放在MyProject子文件夹pluginData吗?