题 ssh到远程服务器时如何使用临时配置文件


我经常使用ssh登录到远程服务器,以执行标准管理工作。我有本地bashrc / vimrc和各种其他配置文件,我希望远程可用。我经常只登录这些远程服务器,所以我不想在这些盒子上留下我的个人资料的副本,其中一些是在客户网站上。

我确实考虑过做一些黑客让远程服务器挂载fusefs webDAV或其他方式在会话期间将远程文件系统挂载到远程服务器。但是,如果远程系统没有必要的软件包,或者是防火墙,则会出现问题。

这个问题是否有任何良好的解决方案是交叉分发兼容的,最近的fedora / RHEL / ubuntu / debian / CentOS,并且不会干扰或减慢登录过程?

[编辑]

我想其他一个考虑因素是,我可能正在使用别人用户帐户登录,所以我不想对配置文件进行任何持久的更改。理想情况下,我只会为会话使用一些临时配置文件,然后在注销时将其丢弃。 这可能是在棍棒领域进入月球;-)


5
2017-07-16 20:55






答案:


您可以使用 ssh -t 运行安装脚本,然后是shell,然后清理脚本。 ssh -t 允许您运行命令,但仍然在中间运行一个或多个shell并正确分配终端

您的设置脚本可以包括wget'ing / curl'ing / scp'临时主目录 $HOME/tmphome,然后运行这样的脚本在那里启动一个shell:

#!/bin/sh

HOME="$HOME/tmphome"
cd "$HOME"
bash --login

这应该可以很好地将你的rc文件隔离到tmphome,而ssh -t将跳过用户的bashrc。只要您的环境是轻量级的,复制就不需要很长时间。

你的命令可能是这样的 ssh -t user@host 'wget http://server/tmphome.tar.gz && tar -zxvf tmphome.tar.gz && rm tmphome.tar.gz && tmphome/shell.sh'


5
2017-07-16 23:33





为什么不使用像git这样的分布式版本控制系统来存储配置文件?这就是我的工作,它就像一个魅力。


2
2017-07-16 21:14



这有点会打败整个“我可能只登录一次”问题的一部分;安装DVCS,可能弹出开放式防火墙或其他任何东西,然后下载环境副本可能需要更长时间而不仅仅是修复问题。 - womble♦
我最终这样做了,运行一个.ssh / rc脚本,将我的.bashrc文件同步到远程服务器,你是对的,就像魅力一样。但是它不符合原始问题的要求,因为我不能接受这个答案。这是另一个问题的答案...... ;-) - Tom H


许多'老派'unix管理员将他们的共同设置存储在一个 cvs 库。他们第一次登录新系统 cvs checkout 该存储库,并配置他们的 .bashrc 做一个 cvs update 获取当前设置,然后调用 ~/repo/bin/setup (哪里 repo 是哪里的 cvs checkout 有针对性的 setup 是一个添加的脚本 /repo/bin 他们的 $PATH 设置 aliases等)。

此方法确实会在系统上保留您的设置,但在许多情况下这可能不是一个大问题。

你当然可以替代 svn 要么 git 对于 cvs


1
2017-07-16 21:15



有多少生产系统预装了您的特定VCS? - womble♦
我原本以为cvs会有空。所以scp / rcp或ftp / curl / wget可以用来检索文件。 - Tom H


我解决这个问题的方法是学会熟悉常用标准,并编写我的手指宏来打开(极少数)我不能没有的可选功能。

问题是,对于只能解决快速问题的机器,设置环境所需的时间可能会超过实际修复问题所需的时间。当你完成时,你所说的离开系统而没有你的自定义设置的愿望会放大这个问题 - 这是一种令人钦佩的情绪,因为我被一个管理员所咬,但是在没有vi模式的情况下(共享) root shell和readline。当你习惯了默认的键绑定时,很难完成任何事情。

我最近很幸运;每当我负责对服务器做事时,他们都是“我的”,因为我有永久的行政责任/权限,而我刚刚使用我的系统自动化工具预先配置机器如何我喜欢他们。

对于临时访问,如果我要回到它并且迫切需要我自己的小环境,我倾向于开发两个shell脚本:

  • 我在登录新服务器之前运行的一个,它将所有我想要的配置文件(保留之前的内容的副本)放在一起,并且可能安装了包(适用于手头的发行版),或者至少报告了什么是遗失的,所以当我开始研究它时,我知道我会在远程服务器上做什么。
  • 另一个,它将清理所有状态到我运行第一个脚本之前的状态 - 卸载软件包(你需要确保你知道你安装了什么,而不是你到那之前已经存在的东西) ,并将原始配置文件移回原位。

这些脚本将是相当多的编写和调试工作,尤其是在不同发行版的不足之处。这就是为什么我刚刚学会了对任何轻松工作的理智默认 - 这是一个很好的习惯,如果你将来成为一个团队的一部分,并需要与其他人共享一个环境(先生vi模式bash shell,我瞪着 )。


1
2017-07-16 23:03