Shell 如何将字符串存储到远程文件中?

Shell 如何将字符串存储到远程文件中?,shell,command-line,remote-access,Shell,Command Line,Remote Access,如何将字符串存储到远程文件中? 我需要用命令行中的一些字符串覆盖远程机器上的文件内容(我有用户名、密码和ip,可以通过ssh访问)。 如何在linux上实现这一点?您可以使用ssh在一次操作中修改文件: ssh user@host "echo \"$local_variable\" > /path/to/file" 但是,这是有风险的-如果局部变量中有双引号字符怎么办?在Bash中,您可以通过引用以下值绕过它: ssh user@host "echo $(printf %q "$loca

如何将字符串存储到远程文件中? 我需要用命令行中的一些字符串覆盖远程机器上的文件内容(我有用户名、密码和ip,可以通过ssh访问)。
如何在linux上实现这一点?

您可以使用
ssh
在一次操作中修改文件:

ssh user@host "echo \"$local_variable\" > /path/to/file"
但是,这是有风险的-如果局部变量中有双引号字符怎么办?在Bash中,您可以通过引用以下值绕过它:

ssh user@host "echo $(printf %q "$local_variable") > /path/to/file"

要做到这一点,并避免任何奇怪的转义问题,更简单、更安全的方法是只需将内容保存到本地文件中,然后使用
scp
rsync
将其复制过来,如果您有权访问ssh,则可以在远程计算机上执行任何命令:

ssh username@remotehost.com /usr/bin/mycommand
(例如,如果愿意,可以将字符串回显到文件中)

如果您想摆脱密码提示,可以使用SSH密钥身份验证:

ssh-keygen -t dsa
scp .ssh/id_rsa.pub username@remotehost.com:~/.ssh/authorized_keys2
一旦您的密钥位于远程计算机上,您就可以使用ssh而无需密码。(警告:使用不受密码保护的密钥可能有风险)

sshuser@host-c“echo$yourstring>>/path/to/file”