Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将文件传输到主机并向其传递密码_Linux_Docker_Ubuntu_Ssh_Gitlab - Fatal编程技术网

Linux 如何将文件传输到主机并向其传递密码

Linux 如何将文件传输到主机并向其传递密码,linux,docker,ubuntu,ssh,gitlab,Linux,Docker,Ubuntu,Ssh,Gitlab,我正在尝试将一些文件从gitlab ci复制到主机。我当前正在将open sshclient与scp一起使用,但它引发了一个错误: user@ip:权限被拒绝公钥、密码 我不知道如何将密码传递给脚本 这是我的.gitlab-ci.yml文件: 这是gitlab ci的输出: $ apk update fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alp

我正在尝试将一些文件从gitlab ci复制到主机。我当前正在将open sshclient与scp一起使用,但它引发了一个错误:

user@ip:权限被拒绝公钥、密码

我不知道如何将密码传递给脚本

这是我的.gitlab-ci.yml文件:

这是gitlab ci的输出:

$ apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
v3.8.4-9-g931e9aefbb [http://dl-cdn.alpinelinux.org/alpine/v3.8/main]
v3.8.4-4-gc27a9a0149 [http://dl-cdn.alpinelinux.org/alpine/v3.8/community]
OK: 9550 distinct packages available
$ apk add --no-cache openssh-client
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/2) Installing openssh-keygen (7.7_p1-r4)
(2/2) Installing openssh-client (7.7_p1-r4)
Executing busybox-1.28.4-r1.trigger
OK: 67 MiB in 28 packages
$ mkdir ~/.ssh
$ eval $(ssh-agent -s)
Agent pid 20
$ [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
$ echo "${USER_PASS}" || ssh-add -
"IT SHOWS THE PASSWORD"
$ ssh -p22 user@ip "mkdir /home/test"
Warning: Permanently added 'ip' (ECDSA) to the list of known hosts.
Permission denied, please try again.
Permission denied, please try again.
user@ip: Permission denied (publickey,password).
我不知道我是否也需要添加公钥,还是只需要添加密码。如果是这样,我该怎么做


或者是否有其他方法通过提供密码将文件发送到另一台服务器

您需要服务器的私钥

scp -C -i <link to your private key> -r <source_directory> username@ip:<target_directory>
如果你只是想ssh

ssh -i <link to your private key> username@ip

将您的密码添加到Gitlab secret变量,例如-DEPLOY_SSH_password在项目设置中的某个位置并使用它:

sshpass -p $DEPLOY_SSH_PASSWORD ssh user@ip
但是我建议你使用私钥,这样更安全。 将私钥添加到Gitlab secret变量,例如-DEPLOY_SSH_key,将私钥复制到运行程序上的临时文件:

- echo "$DEPLOY_SSH_KEY" > ~/.ssh/id_rsa
只要使用它:

- ssh -i ~/.ssh/id_rsa user@ip

秘密变量位于这里:Project->Settings->CI/CD->Environment variables,俗话说:$ssh-i~/.ssh/id\u rsauser@ip不会分配伪终端,因为stdin不是终端。主机密钥验证失败。我在主机中通过ssh keygen-t rsa生成了rsa,并将其保存为~/.ssh下的id_rsa和id_rsa.pub。我将id_rsa.pub的内容放在环境变量中,您需要将密钥的私有部分放在变量中,例如文件id_rsa@QuasWex我还试图添加id_rsa content too env变量,但它们的同一个字段仍然显示:主机密钥验证失败。我通过ssh-keygen-t rsa在主机中生成了rsa,并将其保存为~/.ssh下的id_rsa和id_rsa.pub。我将id_rsa.pub的内容放在环境变量中
- ssh -i ~/.ssh/id_rsa user@ip