我有一个很多好东西在我的 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)?