我正在GitHub Actions中创建一个yaml文件,以便在使用terraform创建的Linux服务器上安装软件。使用管道,我能够ssh到linux服务器。在其中一个服务器中,我正在创建一个.ssh目录和一个id_rsa文件(其中包含另一个服务器的私钥(,我打算使用该文件将scp复制到另一台服务器中以复制一些文件。我已经使用echo命令将私钥复制到id_rsa文件中。我想查看id_rsa的内容,以确保复制了正确的私钥。我正在使用cat命令,但它不起作用。这是我的代码
ssh chefnode -T
ssh chefnode -t 'sudo apt-get update && sudo apt-get upgrade -y'
ssh chefnode -t 'echo "$INFRA_PRIVATE_KEY" > "/home/'$SSH_NODE_USER'/.ssh/id_rsa"'
ssh chefnode -t 'cat "/home/'$SSH_NODE_USER'/.ssh/id_rsa"'
命令运行,但cat命令不返回任何输出。它不会失败。管道通过,但此命令不呈现任何输出。我也尝试过以下组合,但没有任何效果
ssh chefnode -t 'cat /home/"$SSH_NODE_USER"/.ssh/id_rsa'
ssh chefnode -t 'cat /home/$SSH_NODE_USER/.ssh/id_rsa'
ssh chefnode -t cat /home/'$SSH_NODE_USER'/.ssh/id_rsa
ssh chefnode -t cat /home/$SSH_NODE_USER/.ssh/id_rsa
我也试过这个
ssh chefnode -t 'echo "$INFRA_PRIVATE_KEY" > "/home/'$SSH_NODE_USER'/.ssh/id_rsa"'
ssh chefnode -t 'cd "/home/'$SSH_NODE_USER'/.ssh";"cat id_rsa"'
表示找不到cat命令。我只是想查看id_rsa文件的内容,不确定我做错了什么。
ssh chefnode -t 'echo "$INFRA_PRIVATE_KEY" > "/home/'$SSH_NODE_USER'/.ssh/id_rsa"'
除非$INFRA_PRIVATE_KEY
是由登录环境在chefnode上设置的变量,否则它很可能是空的。
我假设您想在本地控制台上发送一个变量集,但正如所写的那样,这实际上是将"$INFRA_PRIVATE_KEY"
发送到服务器,服务器可能会扩展为空(即文件实际上是空的(。
你可能想要这样的东西:
ssh chefnode -t 'echo "'"$INFRA_PRIVATE_KEY"'" > "/home/'$SSH_NODE_USER'/.ssh/id_rsa"'
它本地扩展变量,然后用引号发送(假设变量值本身没有嵌入引号(