将客户端公钥复制到 sftp 服务器时远程主机关闭连接

将客户端公钥复制到 sftp 服务器时远程主机关闭连接

我想将容器的客户端公钥复制到远程 sftp 服务器,然后尝试通过 bash 脚本将一些内容上传到服务器(容器运行时将调用 bash 脚本)。复制客户端公钥和服务器主机密钥的逻辑位于以下 Dockerfile 中:

FROM alpine:3.2
WORKDIR /tmp

# Copy backup script
COPY dump.sh .
RUN chmod +x dump.sh

# Install sshtools
RUN apk add --update --no-cache openssh
RUN apk add --update --no-cache sshpass

#grab server host keys
RUN mkdir /root/.ssh/ &&\
    chmod 700 /root/.ssh &&\
    touch /root/.ssh/known_hosts &&\
    ssh-keyscan -v -t rsa -p 2021 ftp.example.com >> /root/.ssh/known_hosts 
#generate client public key   
RUN cd /root/.ssh/ &&\
    ssh-keygen -t rsa -C "TestKeys" -f test3  &&\
    touch /root/.ssh/scanned_keys.txt &&\
    cat /root/.ssh/known_hosts >> /root/.ssh/scanned_keys.txt
# set ssh permissions
RUN chmod 644 /root/.ssh/test3.pub
RUN chmod 600 /root/.ssh/test3
RUN chmod 644 /root/.ssh/known_hosts
RUN sshpass -p 'mypassword' ssh-copy-id -i /root/.ssh/test3.pub [email protected] -p 2021
#RUN ls -la

我收到错误ssh_exchange_identification:远程主机关闭连接在构建中。构建输出的一部分:

 => CACHED [ 5/15] RUN apk add --update --no-cache openssh                                                                                             0.0s 
 => CACHED [ 6/15] RUN apk add --update --no-cache sshpass                                                                                             0.0s 
 => CACHED [ 7/15] RUN mkdir /root/.ssh/ &&    chmod 700 /root/.ssh &&    touch /root/.ssh/known_hosts                                                 0.0s 
 => CACHED [ 8/15] RUN cd /root/.ssh/ &&    ssh-keygen -t rsa -C "TestKeys" -f test3  &&    ssh-keyscan -v -t rsa -p 2021 ftp.example.com >> /root  0.0s 
 => CACHED [ 9/15] RUN chmod 644 /root/.ssh/test3.pub                                                                                                  0.0s 
 > [15/15] RUN sshpass -p 'mypassword' ssh-copy-id -i /root/.ssh/test3.pub [email protected] -p 2021:
#19 0.543 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
#19 0.611 expr: warning: '^ERROR: ': using '^' as the first character
#19 0.611 of a basic regular expression is not portable; it is ignored
#19 0.612
#19 0.612 /usr/bin/ssh-copy-id: ERROR: ssh_exchange_identification: Connection closed by remote host
#19 0.612
------
executor failed running [/bin/sh -c sshpass -p 'mypassword' ssh-copy-id -i /root/.ssh/test3.pub [email protected] -p 2021]: exit code: 1

到目前为止我已经尝试过:

  1. 检查主机密钥是否被复制(是的,它们存在)

    猫/root/.ssh/scanned_keys.txt

  2. 运行命令的变体没有 ssh-copy-id看看是否可以得到更详细的输出

    运行 sshpass -p'我的密码' ssh -p 2021[电子邮件保护]

当我这样做时,我得到了更好的输出:

=> 错误 [17/17] 运行 sshpass -p'mypassword' ssh -p 2021[电子邮件保护] 0.6秒

[17/17] 运行 sshpass -p ‘我的密码’ ssh -p 2021[电子邮件保护]:#21 0.539 不会分配伪终端,因为 stdin 不是终端。#21 0.578 ssh_exchange_identification:远程主机关闭连接


执行程序运行失败[/bin/sh -c sshpass -p'mypassword'ssh -p 2020[电子邮件保护]]: 退出代码:255

  1. 检查服务器的域详细信息

    nslookup ftp.example.com

我已经连续两天运行它,服务器的实际 IP 是动态的(这会产生什么影响吗?)

  1. 尝试在连接上分配 TTY(同样的错误)

=> 错误 [15/15] 运行 sshpass -p'mypassword' ssh -T -p 2021[电子邮件保护] 0.7秒

[15/15] 运行 sshpass -p'我的密码' ssh -T -p 2021[电子邮件保护]:#19 0.671 ssh_exchange_identification:远程主机关闭连接

我怀疑服务器端仍有一些限制。除非有其他问题,否则我应该从客户端再次检查。

我错过了什么?

相关内容