Bitbucket Pipelines与SSH密钥:新增Windows服务器及连接问题排查
Bitbucket Pipelines SSH连接Windows服务器失败问题解决
问题描述
我配置SSH密钥以部署到Windows服务器:
- 在Bitbucket生成SSH密钥并将公钥复制到Windows服务器的
authorized_keys文件 - 在Windows服务器生成SSH密钥并将公钥添加到Bitbucket的SSH密钥列表,同时将服务器添加为已知主机并获取了指纹(不清楚用途)
我的bitbucket-pipelines.yml配置如下:
pipelines: default: - step: name: Deployment script: - pipe: atlassian/ssh-run:0.4.2 variables: SSH_USER: '' SERVER: '' COMMAND: ''
连接时出现错误:
Permission denied, please try again.
Permission denied, please try again.
Received disconnect: Too many authentication failures
需要实现通过SSH连接Windows服务器,解决该问题。
解决方案
1. 修正密钥配置逻辑
Bitbucket Pipelines连接远程服务器时,仅需将Bitbucket生成的私钥对应的公钥放入Windows服务器的authorized_keys文件即可,无需在Windows服务器生成密钥添加到Bitbucket(这是反向连接的配置,不适用当前场景)。
2. 完善bitbucket-pipelines.yml配置
- 填充
SSH_USER:Windows服务器的SSH登录用户名,注意格式(如.\username或domain\username) - 填充
SERVER:服务器的IP/域名,可指定端口(如xxx.xxx.xxx.xxx:22) - 添加
SSH_KEY变量:将Bitbucket生成的私钥内容填入,需在Bitbucket仓库设置中标记为安全变量 - 示例配置:
pipelines: default: - step: name: Deployment script: - pipe: atlassian/ssh-run:0.4.2 variables: SSH_USER: '.\admin' SERVER: '192.168.1.100:22' SSH_KEY: '$BITBUCKET_SSH_PRIVATE_KEY' COMMAND: 'dir C:\deploy'
3. 检查Windows服务器SSH配置
- 确保
OpenSSH SSH Server服务已启动,可在系统服务中设置为自动启动 - 确认
authorized_keys文件路径:默认位于C:\Users\<用户名>\.ssh\authorized_keys,需设置正确权限(仅当前用户拥有读写权限) - 检查服务器防火墙,允许SSH端口(默认22)的入站连接
4. 解决“Too many authentication failures”错误
该错误是因为SSH客户端尝试多个无效密钥导致,可通过以下方式处理:
- 在
ssh-run管道中明确指定SSH_KEY变量,强制使用目标私钥认证 - 清理Bitbucket仓库SSH密钥列表中的无关公钥,减少无效认证尝试
关于服务器指纹的用途
服务器指纹用于验证连接的服务器为目标主机,防止中间人攻击。首次连接时确认指纹并添加到known_hosts后,后续连接会自动校验指纹一致性。
内容的提问来源于stack exchange,提问作者Divya Naidu
相关产品推荐
相关产品推荐

