Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 任何点文件的类似ssh代理的行为_Linux_Ssh_Dotfiles - Fatal编程技术网

Linux 任何点文件的类似ssh代理的行为

Linux 任何点文件的类似ssh代理的行为,linux,ssh,dotfiles,Linux,Ssh,Dotfiles,我正在尝试构建(或者找到它是否存在)一些东西,让我能够将我的dotfiles带到我访问的服务器,就像ssh代理为我的密钥所做的那样 我花了很多时间使用EC2工作,当我启动一个新实例时,我不喜欢没有我的点文件(.vimrc、.gitconfig和我的别名) 我将所有的点文件都保存在git下,并且是公开的,但这还不够解决方案,原因如下: 我使用ssh连接到无法安装git且无法轻松访问internet的生产主机 我不控制我们运行的AMI,因此我不能在其中烘焙我的点文件,而且我通常共享ubuntu或ro

我正在尝试构建(或者找到它是否存在)一些东西,让我能够将我的dotfiles带到我访问的服务器,就像ssh代理为我的密钥所做的那样

我花了很多时间使用EC2工作,当我启动一个新实例时,我不喜欢没有我的点文件(.vimrc、.gitconfig和我的别名)

我将所有的点文件都保存在git下,并且是公开的,但这还不够解决方案,原因如下:

  • 我使用ssh连接到无法安装git且无法轻松访问internet的生产主机
  • 我不控制我们运行的AMI,因此我不能在其中烘焙我的点文件,而且我通常共享ubuntu或root用户,并且在主机上很少有专用用户名(因此我不能只是克隆并保留我的点文件)
  • 现在,我很高兴构建它,以便只使用一个ssh级别。这就是A->B->C(如果只有B有权访问点文件,而C丢失了它们,这是可以的)

    我在想这样的事情:

    ssh-t-r1234:localhost:1234user@server'导出使用\u DOTFILES\u AGENT=1;exec$SHELL'

    我的本地主机上的1234上的点文件提供了服务,所以我的问题是:

    让位于删除端的程序从套接字读取其点文件的最佳方法是什么(很乐意将任何必要的东西放在另一端)


    编辑:虽然阿普马塞尔的回答很有帮助,但我并没有想到这样一个高科技解决方案。可能是沿着wget的线路从该端口进入/tmp/_vimrc,然后让vim以某种方式加载该端口(通过运行
    别名vim=vim
    )。

    SSH在处理任何文件时都没有什么特别的作用。SSH代理能够从该点文件工作,因为
    SSH
    二进制文件知道试图通过
    $SSH\u AUTH\u SOCK
    中的命名管道集打开到代理的连接,并且因为SSH客户端和服务器可以同意代理该请求

    简单地说,其他没有任何内置逻辑的程序无法做到这一点。他们没有办法知道不应该对文件执行标准的
    打开操作

    如果您真的非常想,您可以创建一个
    $LD_PRELOAD
    'ed库,覆盖
    打开
    ,以检查文件是否可用,并尝试模拟对文件的访问,很多情况下,ALSA可以假装为不知道ALSA的程序提供OSS支持,方法是阻止它们尝试打开
    /dev/dsp
    ,然后将请求转换到ALSA音频层

    编写这样一段代码是非常棘手的,因为它需要正确地模拟本地系统的行为。例如,当一个程序编写时,你会做什么?如果连接断开,你怎么办?当您分叉一个守护进程时会发生什么?根据设计,可能会有很多延迟