簡體   English   中英

類似於任何點文件的ssh-agent行為

[英]ssh-agent like behavior for any dotfile

我正在嘗試構建(或查找是否存在)某種東西,就像我的ssh-agent一樣,它可以讓我將點文件帶到我訪問的服務器上。

我花了大量時間在EC2上工作,當我啟動一個新實例時,我不喜歡自己的dotfile(主要是.vimrc,.gitconfig和別名)。

我將所有dotfile都保留在git下,並且可以公開使用,但是由於某些原因,這還不夠解決方案:

  1. 我SSH到無法安裝git並且無法輕松訪問Internet的生產主機。
  2. 我無法控制運行AMI的AMI,因此無法烘烤自己的dotfile,而且我通常也共享ubuntu或root用戶,並且很少在主機上擁有專用的用戶名(因此,我不能只是克隆並將dotfile放在那兒)。

現在,我很高興將其構建為僅使用一個級別的ssh。 那就是A-> B-> C(如果只有B可以訪問點文件而C丟失了點文件就可以了)。

我在想類似的東西:

ssh -t -R 1234:localhost:1234 user@server 'export USE_DOTFILES_AGENT=1 ; exec $SHELL'

在我的本地主機上在1234上提供點文件的東西,所以我的問題是:

使除去側的程序從套接字讀取其點文件的最佳方法是什么(高興地將必要的東西放在另一側)。

編輯:雖然apmasell的回答很有幫助,但我沒有想到如此高科技的解決方案。 可能是從該端口到/ tmp / _vimrc的wget路線的更多內容,然后以某種方式使vim加載(通過運行alias vim=vim <flag for where to find vimrc> )。

SSH對任何文件都沒有特殊要求。 SSH代理能夠從該點文件工作,因為ssh二進制文件知道嘗試通過$SSH_AUTH_SOCK的命名管道集嘗試打開與代理的連接,並且SSH客戶端和服務器可以同意代理該請求。

簡單地說,其他沒有內置任何邏輯來執行此操作的程序不能。 他們沒有辦法知道不應對文件進行標准open

如果確實需要,您可以創建一個$LD_PRELOAD ed庫,該庫將覆蓋open以檢查文件是否可用,並嘗試模擬對該文件的訪問,就像ALSA可以假裝為程序提供OSS支持一樣通過捕獲嘗試打開/dev/dsp並將請求轉換為ALSA音頻層的嘗試,並沒有意識到ALSA。

編寫這樣的代碼非常棘手,因為這將需要正確模擬本地系統的行為。 例如,當編寫程序時您會做什么? 如果連接斷開,該怎么辦? 派生守護程序時會發生什么? 根據設計,可能會有很多延遲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM