Bitbucket 管道 - 如何设置 ssh

Bitbuket pipeline - how to set ssh

当我的管道运行时,出现以下错误:

debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/config
debug1: key_load_private_type: incorrect passphrase supplied to decrypt private key
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
lost connection

这是我的 .yml 文件:

image: maven:3.3.9

pipelines:
  default:
    - step:
        caches:
          - maven
        name: Build
        script: # Modify the commands below to build your repository.
          - echo "Build Start"
          - mvn package
          - echo $BUILD_DIR
          - mv target/**.jar target/transpoDirect.jar
        artifacts:
          - target/**.jar
    - step:
        name: Deploy
        image: maven:3.3.9
        script:
           - ls -la .
           - scp -i ~/.ssh/config -P 7822 -v -o StrictHostKeyChecking=no target/*.jar root@$hostName:/var/transpoDirect/.
           - ssh -p 7822 -i ~/.ssh/config -v -o StrictHostKeyChecking=no root@$hostName sudo service transpoDirect restart

我试过的是 chmod ~/.ssh 文件夹和那里的文件到 777

hostName 变量在存储库的设置中设置。

重新生成密钥。粘贴到远程服务器的 authorize_keys 文件中,但我仍然遇到相同的错误

authorized_keys 的位置:

============================================= ===================

这是有效的:

  1. 已从 bitbucket 的管道中删除 SSH 密钥。
  2. 使用以下命令在远程服务器上生成了 SSH 密钥:ssh-keygen
  3. 以上命令使用默认值,不设置密码。
  4. 生成密钥的默认位置是:/root/.ssh
  5. .ssh 文件夹已隐藏。使用 winSCP 您可以取消隐藏隐藏的文件夹。
  6. 已从远程服务器复制 id_rsa.pub 的内容并粘贴到 bitbucket 的 SSH。
  7. 在 /root/.ssh
  8. 中使用 id_rsa.pub 的内容创建了 authorized_keys
  9. 从远程服务器复制 id_rsa 的内容并粘贴到 bitbucket 的 SSH。
  10. 这会将 jar 复制到远程服务器:

    • scp -i /root/.ssh -4 -P 7822 -v -o StrictHostKeyChecking=no target/*.jar root@$hostName:/var/transpoDirect/.
  11. 这将按照此处所述重新启动服务:https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

    • ssh -4 -p 7822 -i /root/.ssh -v -o StrictHostKeyChecking=no root@$hostName sudo service transpoDirect 重启

您与 SSH 密钥一起使用的私钥有一个密码,但您没有在 YAML 中的任何地方指定密码。您可以生成一个专供 Pipelines 使用的新密钥,或者您可以上传没有密码的现有密钥的副本,或者您可能能够使用环境变量来提供密码。

这是有效的:

  1. 已从 bitbucket 的管道中删除 SSH 密钥。
  2. 使用以下命令在远程服务器上生成了 SSH 密钥:ssh-keygen
  3. 以上命令使用默认值,不设置密码。
  4. 生成密钥的默认位置是:/root/.ssh
  5. .ssh 文件夹已隐藏。使用 winSCP 您可以取消隐藏隐藏的文件夹。
  6. 已从远程服务器复制 id_rsa.pub 的内容并粘贴到 bitbucket 的 SSH。
  7. 在 /root/.ssh
  8. 中使用 id_rsa.pub 的内容创建了 authorized_keys
  9. 从远程服务器复制 id_rsa 的内容并粘贴到 bitbucket 的 SSH。
  10. 这会将 jar 复制到远程服务器:

    scp -i /root/.ssh -4 -P 7822 -v -o StrictHostKeyChecking=no target/*.jar root@$hostName:/var/transpoDirect/.

  11. 这将按照此处所述重新启动服务:https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

    ssh -4 -p 7822 -i /root/.ssh -v -o StrictHostKeyChecking=no root@$hostName sudo service transpoDirect restart


进一步说明: 该文件应放在 $HOME/.ssh/authorized_keys 您可以通过 eval echo "$HOME" 检查 $HOME 的位置 此外,需要了解的是 id_rsa 是私有文件 - 这意味着该文件不会共享,但 id_rsa.pub 是 public 文件,这是要共享的文件给其他服务器。