debug1: выход из состояния 0 при попытке выполнить ssh на удаленном сервере - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь скопировать некоторые файлы, а затем ssh на удаленный сервер.Работает нормально с localhost.Однако, когда я пытаюсь сделать то же самое с помощью сценария оболочки в Jenkins, сессия ssh застревает или закрывается.Я попытался запустить команду scp самостоятельно, хэшируя команду sab, и это прекрасно работает.Я получаю debug1: состояние выхода 0 в конце моего вывода на консоль.

Команды, которые я пытаюсь выполнить:

sshpass -p 0pen5ecret scp -v -o StrictHostKeyChecking=no 
/home/jenkins/test_folder/${env}_test.properties 
servername@${server}:/home/

, а затем

sshpass -p password ssh -tt -o StrictHostKeyChecking=no 
servername@${server} 'cd /home ; rm -f cachefolder ; sh test.sh'

Ниже приведено сообщение об ошибке, которое я получаю в выводе на консоль:

debug1: Host '172.21.83.215' is known and matches the RSA host key.
debug1: Found key in /var/lib/jenkins/.ssh/known_hosts:9
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard- 
interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /var/lib/jenkins/.ssh/id_rsa
debug1: Trying private key: /var/lib/jenkins/.ssh/id_dsa
debug1: Trying private key: /var/lib/jenkins/.ssh/id_ecdsa
debug1: Trying private key: /var/lib/jenkins/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to 172.21.83.244 ([172.21.83.210]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending command: scp -v -t /data01/DS_Release
Sending file modes: C0777 123 TS2_DeploymentScore.properties
Sink: C0777 123 TS2_DeploymentScore.properties
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
debug1: fd 2 clearing O_NONBLOCK
Transferred: sent 3320, received 4596 bytes, in 0.1 seconds
Bytes per second: sent 54147.4, received 74958.3
debug1: Exit status 0

Как это можно решить?Заранее спасибо.Кстати, это мой самый первый вопрос, так что будьте добры.

1 Ответ

0 голосов
/ 23 сентября 2019

Для удаленного SCP-файла через сервер вы можете использовать один из двух вариантов:

  1. Если вы используете файл Jenkins, вы можете использовать функции хранения и распаковки Jenkins:

    • создайте два этапа в конвейере, запустите первый этап на исходном сервере и сохраните в нем свои файлы.
    • запустите второй этап на конечном сервере и распакуйте файлы на этом сервере.(вам нужно установить агент Jenkins на сервере)
  2. Если вы используете вольную работу, вы можете использовать сценарий ожидаемого копирования для удаленного копирования файлов, вы можете использовать следующий синтаксис:

    #!/usr/bin/expect -f
    
    #Usage sshsudologin.expect <host> <ssh user> <ssh password> <foldername>
    
    set timeout 20
    
    spawn scp  -r "/sourcefolder/[lindex $argv 3]" [lindex $argv 1]@[lindex $argv 0]:"/export/home/[lindex $argv 1]/"
    
    expect "yes/no" {
    send "yes\r"
    expect "*?assword" { send "[lindex $argv 2]\r" }
    } "*?assword" { send "[lindex $argv 2]\r" }
    
    
    expect eof
    
...