有没有办法在通过 SSH 连接到主机时推送 shell 配置信息?

有没有办法在通过 SSH 连接到主机时推送 shell 配置信息?

我有一个很多好东西在我的 bash 配置中。通常当我获得一个新帐户时,我会从我的 GitHub 仓库这样我就有了所有我习惯的别名和功能。我访问的一些主机上没有我自己的帐户,但有许多人使用的共享帐户,所以安装我的 shell 配置对我来说是不礼貌的。

有没有办法通过 SSH 会话推送我的 shell 配置,或者至少一些初始化命令,以便我获得我习惯的环境?

答案1

插入关于共享账户的强制性抱怨,但如果你至少有自己的 ssh 密钥,你可以(滥用)command=使用~/.ssh/authorized_keys文件。带有命令选项的密钥仅适用于运行指定的命令;但 authorized_keys 文件中的命令运行时将环境变量SSH_ORIGINAL_COMMAND设置为用户指定的命令(交互式会话中为空)。因此,您可以在中使用类似以下内容~/.ssh/authorized_keys

command="HOME=$HOME/.HOME.drew;
         if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
           eval \"$SSH_ORIGINAL_COMMAND\";
         else exec \"$SHELL\"; fi" ssh-rsa AAAA…== [email protected]

请注意,为了便于阅读,我在上方添加了换行符,但实际上这些内容需要全部放在authorized_keys文件中的一行上。

然后将您最喜欢的配置文件放在该.HOME.drew目录中。

为了准时使用,您可以明确地获取配置文件或运行任何 shell 命令。-t如果您想运行交互式命令,请传递选项以使用终端。

ssh shared-account@server "LS_COLORS='$LS_COLORS' ls --color"
ssh -t shared-account@server '. ~/.profile.drew; exec zsh'

如果你只想编辑或复制远程计算机上的文件,则可以使用网络文件系统,例如SSH文件系统(适用于 unix 客户端)或流浪汉(适用于 Emacs)并在舒适的本地环境中工作。

答案2

我喜欢将文件保存.bsa在方便的地方(~在这种情况下可能会有用),这样我就. ~/.bsa可以获得我的环境。

答案3

也许尝试使用“LocalCommand”来破解某些东西(参见 man ssh_config)?

相关内容