如何使用 SSH 远程写入文件

如何使用 SSH 远程写入文件

我可以毫无问题地将文件复制到远程Linux机器

scp file user@host: /pathtowrite_file

但是,我在将文件从一台 Linux 计算机写入另一台 Linux 计算机时遇到了困难。以下是我尝试的操作:

echo 'Some Text' > /remotefile.txt | ssh user@remotehost

我收到的通知是

stdin:不是 tty

无论如何,远程机器上的文件不会反映发送的文本“某些文本”。

答案1

您可以使用“cat”命令来创建远程文件。

echo 'Some Text' | ssh user@remotehost -T "cat > /remotefile.txt"

禁用-T伪终端分配并阻止你获取消息,

不会分配伪终端,因为 stdin 不是终端。

答案2

比其他答案短一点:

ssh user@remotehost "echo Some Text > /remotefile.txt"

答案3

也可以使用附加到文件。可能有点晦涩,但如果无法在远程主机上进行输出重定向,则很有用。

cat ~/.ssh/id_rsa.pub | ssh [email protected] 'dd of=.ssh/authorized_keys oflag=append conv=notrunc'

此示例将您的公钥附加到远程主机上的authorized_keys文件。

(来源:http://www.rsync.net/resources/howto/ssh_keys.html

答案4

如果必须多次使用,使用此代码可能会更容易。使用“sshpass”工具,ssh 不会在每次调用脚本时提示您输入密码。(除非您需要保密,否则最好不要使用它)

有关 sshpass 的更多信息: https://stackoverflow.com/questions/12202587/automatically-enter-ssh-password-with-script

#!/bin/bash

SCRIPT="echo 'nameserver 8.8.8.8' > /etc/resolv.conf"        

if [ "$#" -ne 1 ]; then
        echo "Wrong number of arguments. usage: prog dest_machine"
else
        sshpass -p "root" ssh -o StrictHostKeyChecking=no root@"$1" "${SCRIPT}"
fi

相关内容