使用ssh时,cat命令无法按预期工作



我正在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"'

它本地扩展变量,然后用引号发送(假设变量值本身没有嵌入引号(

相关内容

  • 没有找到相关文章

最新更新