我们有一台RHEL 7远程服务器,我在其中创建了一个名为gitlabci
的虚拟用户。
authorized_keys
这个想法是当CI运行时,GitLab运行程序将以我创建的gitlabci
用户的身份通过SSH进入远程服务器,然后使用部署密钥将分支提取到Web目录中。
我以为我已经正确设置了密钥,但是每当跑步者尝试进行SSH时,连接都会被拒绝。
$ which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )
...
$ eval $(ssh-agent -s)
Agent pid 457
$ echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
Identity added: (stdin) (GitLab CI)
$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh
$ [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
$ ssh gitlabci@random.server.com
Pseudo-terminal will not be allocated because stdin is not a terminal.
ssh: connect to host random.server.com port 22: Connection refused
ERROR: Job failed: exit code 1
当我尝试使用本地密钥对通过本地计算机上的GitBash SSH到远程服务器时,它确实起作用了。
$ ssh -i ~/.ssh/gitlabci gitlabci@random.server.com
Last login: Mon Nov 4 13:49:59 2019 from machine01.work.server.com
答案 0 :(得分:2)
ssh: connect to host random.server.com port 22: Connection refused
“拒绝连接”表示ssh客户端向指定的主机和端口发送了连接请求,并且作为响应,它收到了所谓的“重置”数据包,表明远程服务器拒绝接受连接。 / p>
如果您可以从一台主机连接到random.server.com
,但又被另一台主机拒绝连接,那么您会想到一些可能的解释:
您的.ssh / config文件中可能会有一个条目,该条目用random.server.com
替代了其他名称或地址。例如,当您请求random2.server.com
时,类似下面的条目将导致ssh连接到random.server.com
:
Host random.server.com
Hostname random2.server.com
“ random.server.com”的IP地址查找以某种方式返回了错误的地址,因此ssh试图连接到错误的服务器。例如,某人可能已为该主机名在/etc/hosts
中添加了一个条目。
某些防火墙或其他数据包检查软件通过响应伪造的复位数据包来干扰连接尝试。