.gitlab-ci.yml Gitlab部署SFTP无法正常工作

时间:2018-09-04 02:18:13

标签: git gitlab gitlab-ci gitlab-ci-runner lftp

deploy:
  stage: deploy
  script:
    - apt-get update -qq && apt-get install -y -qq lftp
    #- lftp -u $DEPLOY_USER,$SFTP_PASSWORD $DEPLOY_HOST -e "mirror -e -R -p ./dist/ new/ ; quit"
    - lftp -c "set ftp:ssl-allow no; debug; open -u root,$DEPLOY_PASSWORD -p 22 $DEPLOY_HOST; mirror -Rev ./ gitlab --verbose --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
    - echo "deployment complete"
  # specify environment this job is using
  environment:
    name: staging
    url: https://xxxxxxxx.de/
  # needs artifacts from previous build

您能帮我编写脚本吗? 谢谢。 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

新失败->

--verbose --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
---- Running connect program (ssh -a -x -s -l root xx.xx.xxx.xx sftp)
---> sending a packet, length=5, type=1(INIT), id=0
<--- The authenticity of host 'xx.xx.xxx.xx (xx.xx.xxx.xx)' can't be established.
<--- ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxx+xxxxxxxxxxxxxx.
<--- Are you sure you want to continue connecting (yes/no)? no
<--- 
<--- Host key verification failed.
---- Disconnecting
---- Running connect program (ssh -a -x -s -l root xx.xx.xxx.xx sftp)
---> sending a packet, length=5, type=1(INIT), id=0
<--- The authenticity of host 'xx.xx.xxx.xx (xx.xx.xxx.xx)' can't be established.
<--- ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxx+xxxxxxxxxxxxx.
<--- Are you sure you want to continue connecting (yes/no)? no
<--- 
<--- Host key verification failed.
mirror: Fatal error: Host key verification failed.
---- Disconnecting
ERROR: Job failed: exit code 1

2 个答案:

答案 0 :(得分:2)

您已经设置了ftp:ssl-allow no,但是您正在连接到最有可能是SSL服务的端口22。

假设您打算使用SSL进行连接。 尝试:set ftp:ssl-allow true;作为lftp命令的一部分。

lftp man page指出:

  

ftp:ssl-allow(布尔值)                 如果为true,请尝试与FTP服务器协商SSL连接以进行非匿名访问。                 默认为true。仅当lftp已编译时,此设置和其他SSL设置才可用                 带有ssl / tls库。

答案 1 :(得分:1)

  

lftp -c“设置ftp:ssl-allow no;调试;打开-u根目录,$ DEPLOY_PASSWORD -p 22 $ DEPLOY_HOST…”

首先,删除set ftp:ssl-allow no;或将其设置为yes

2,您在标题中说“ SFTP”并使用端口22;协议SFTP 不是 FTP,它是一个完全不同的协议;要使用它,您必须使lftp通过使用带有sftp://协议的URL来使用该协议:

lftp -c "debug; open -u root,$DEPLOY_PASSWORD sftp://$DEPLOY_HOST…"