Добрый день. При попытке подключиться к серверу по SSH возникает ошибка. Установил плагин SSH agent, проект запускается через в Jenkinsfile (использую GitLab, если это важно).
Использую следующий синтаксис:
stage('Connect to SSH') {
steps {
sshagent (credentials: ['4******6-****-****-****-135a****ojwe']) {
sh label: '', script: 'cd /home/***/'
sh label: '', script: './*** stop'
sh label: '', script: 'rm -f ***.jar'
}
sh label: '', script: '...'
}
}
Ошибка следующего содержания:
FATAL: [ssh-agent] Could not find specified credentials
Подскажите, пожалуйста, что можно предпринять и с чем может быть это связанно?
Вы были правы, действительно, не так указывал ID.
Но теперь другая проблема. После подключения, мне нужно пройти по определенному пути и произвести действия с файлом. НО Jenkins ищет пути и файлы в workspaces, а не на сервере…
Пример:
[ssh-agent] Using credentials dev
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-V**v/agent.3***2
SSH_AGENT_PID=3***5
Running ssh-add (command line suppressed)
Identity added: /var/lib/jenkins/workspace/T***@tmp/private_key_***.key (/var/lib/jenkins/workspace/T***@tmp/private_key_***.key)
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
+ sudo su
+ pwd
/var/lib/jenkins/workspace/T***
И если я ввожу команду “cd /путь”, то он его естественно не находит.
Вполне вероятно, что и я что-то не понимаю, и в целом так и должно быть, как это вообще устроено?
Подскажите, пожалуйста, хотя бы что почитать по этой теме.
Если выполнить какие-то скрипты на слэйвах - то, имхо, проще это делать через SSH Slaves.
Если же вы хотите выполнить какой-то скрипт на самом сервере дженкинса, то можно это сделать проще, не используя плагинов:
Я хочу, чтобы сервер Jenkins подключался через SSH к удаленному серверу, а затем запускал команду на удаленном сервере.
Вместо этого Jenkins подключается к удаленному серверу, затем выполняя команду , например, pwd , делает ее локально, а не на удаленном сервере как мне нужно.
Почему последующие команды команды не запускаются внутри оболочки SSH, а вместо этого выполняются локально?