【问题标题】:Concatenating a local file with a remote one将本地文件与远程文件连接起来
【发布时间】:2017-05-07 19:40:33
【问题描述】:

这三行代码需要两次身份验证。我尚未在此服务器上设置无密码身份验证。实际上,这几行代码就是将我的公钥复制到服务器,并与现有文件连接起来。

我怎样才能用一个只需要验证一次的ssh 命令重写这个过程?

scp ~/local.txt user@server.com:~/remote.txt

ssh -l user user@server.com

cat ~/remote.txt >> ~/otherRemote.txt 

我研究了以下可能性:

我还考虑将local.txt 放置在可公开访问的位置,例如,使用公共保管箱链接。那么如果cat 可以接受这个作为输入,那么scp 行就没有必要了。但这也需要额外的步骤,并且在 local.txt 无法公开的情况下不起作用。

其他参考资料:

Using a variable's value as password for scp, ssh etc. instead of prompting for user input every time

https://superuser.com/questions/400714/how-to-remotely-write-to-a-file-using-ssh

【问题讨论】:

  • 你试过ssh-copy-id命令吗?它会自动为您执行此操作。
  • 我需要安装它。您认为与以下解决方案相比有什么优势吗?它会在 bash 脚本中更轻松地工作吗? stackoverflow.com/questions/25655450/…
  • ssh-copy-id 做了一些额外的事情,比如在必要时创建~/.ssh,并确保权限正确。但除此之外,它基本上等同于下面的答案。

标签: bash macos ssh


【解决方案1】:

您可以将内容重定向到遥控器,然后使用遥控器上的命令对其进行操作。像这样:

ssh user@server.com 'cat >> otherRemote.txt' < ~/local.txt

远程cat 命令将接收~/local.txt 的内容作为其输入,通过输入重定向传递给ssh 命令。

顺便说一句,正如@Barmar 指出的那样,在您的示例中同时使用-l useruser@ 指定用户名也是多余的。

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 2014-12-13
    • 2016-04-07
    • 2020-01-04
    • 1970-01-01
    • 2011-09-13
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多