如何在 SSH 登录时使用自定义 .bashrc 文件

gsi*_*011 24 ssh configuration bash bashrc

我发现在与我合作的新公司中,我经常不得不访问生命周期相对较短的 linux 服务器。在这些服务器中的每一个上,我都有一个帐户,但是每当创建一个新帐户时,我都必须通过我的 .bashrc 进行转移。然而,有可能在大约一个月的时间内该服务器将不再存在。我还必须在短时间内(几分钟)访问许多其他服务器,通过我的 .bashrc 进行传输是不值得的,但由于我在很多服务器上工作,这加起来浪费了很多时间。

我不想更改服务器上的任何内容,但我想知道是否有办法拥有“每个连接”的 .bashrc,因此每当我通过 SSH 连接到服务器时,我的设置都将用于该会话。

如果这是可能的,如果我可以对其他配置文件(如 gitconfig 文件)做同样的事情,那就太好了。

Rus*_*art 17

我认为 sshrc 就是你要找的:https : //github.com/Russell91/sshrc

sshrc 就像 ssh 一样工作,但它也在远程登录后获取 ~/.sshrc 。

$ echo "echo welcome" > ~/.sshrc
$ sshrc me@myserver
welcome

$ echo "alias ..='cd ..'" > ~/.sshrc
$ sshrc me@myserver
$ type ..
.. is aliased to `cd ..'
Run Code Online (Sandbox Code Playgroud)

您可以使用它来设置环境变量、定义函数和运行登录后命令。就这么简单,它不会影响服务器上的其他用户——即使他们也使用 sshrc。有关更高级的配置,请继续阅读。

  • 我正在努力修复所有这些! (3认同)
  • 我很久以前(在 sshrc 之前)写了一个类似的 sshrc:https://github.com/fsquillace/pearl-ssh 它只是更高效,更小,并且没有 xxd 依赖项。 (2认同)

Qui*_*phy 7

我认为您想要的是(在您连接的机器上的 .ssh/config 中):

PermitLocalCommand yes
LocalCommand scp yourname@someserver:/dir/dotbash /local/home/dir/.bashrc
Run Code Online (Sandbox Code Playgroud)

然后你可以引导:

source .bashrc
Run Code Online (Sandbox Code Playgroud)

并在你快乐的方式。LocalCommand 在您连接的服务器上执行命令,当它到达那里时,就在您的实际会话之前。

我还要确保服务器上的 sshds 配置了 PermitLocalCommand yes

有很多方法可以调整 LocalCommand 以使其在您的特定环境中工作——例如,您可以从内部 Web 服务器 curl 或从 nfs 挂载中拉取。