我遇到了多个用户在远程机器上共享同一个用户帐户的情况。我有一个“个人”目录,我在其中编写了自己的.zshrc
文件,我想有一种方法:
ControlMaster auto
).zshrc
在我的“个人”目录中运行(不在共享用户的主目录中)有一个别名或一种启动此类 ssh 会话的简单方法会很好(这就是我考虑使用 OpenSSH 的配置文件的原因),但我对任何其他想法持开放态度!
我在 OpenSSH 的 ssh_config手册页上读到,我可以使用该指令LocalCommand
指定在成功连接到服务器后在本地运行的命令。这让我觉得可能有一种方法可以告诉config
文件在连接到服务器后远程运行什么命令,但似乎没有。
Gil*_*il' 15
远程运行命令最明显的方法是在 ssh 命令行上指定它。ssh 命令总是由远程用户的 shell 解释。
ssh bob@example.com '. ~/.profile; command_that_needs_environment_variables'
ssh -t bob@example.com '. ~/.profile; exec zsh'
Run Code Online (Sandbox Code Playgroud)
共享帐户通常是个坏主意;如果可能,请为每个用户获取单独的帐户。如果您坚持使用共享帐户,则可以创建别名:
ssh -t shared-account@example.com 'HOME=~/bob; . ~/.profile; exec zsh'
Run Code Online (Sandbox Code Playgroud)
如果您使用公钥身份验证(再次推荐),您可以在~/.ssh/authorized_keys
. 有关更多解释,请参阅此答案。~/.ssh/authorized_keys
在服务器上编辑您的密钥行(全部在一行上):
command="HOME=$HOME/bob;
if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
eval \"$SSH_ORIGINAL_COMMAND\";
else exec \"$SHELL\"; fi" ssh-rsa AAAA…== bob@some.where
Run Code Online (Sandbox Code Playgroud)