修改 SSH 规则的 .profile

修改 SSH 规则的 .profile

我希望在 .profile 中创建以下脚本,以便每个 SSH 会话都能直接进入其位置:

  1. 检查指定主机 (user@host)。
  2. 如果主机 = host1 -- cd /var/www/site1

ETC。

帮助! :)

答案1

我非常肯定 SSH 不会将主机名发送到服务器(它只是在本地使用它来查找 IP 地址并检查密钥等)。至少,不能以可以在 shell 脚本中使用的方式发送。

查看输出env- 唯一的主机名是规范的主机名,无论 ssh 命令中使用了什么名称。

一些 SSH 客户端和一些 SSH 服务器允许客户端指定一个或多个环境变量的值,可以想象您可以使用它来告诉服务器切换到哪个目录。例如,请参阅 Putty配置、连接、数据或 OpenSSH发送环境变量选项。

否则,您将为每个具有不同域名的网站提供一个用户 ID,或者您必须为用户提供菜单。

答案2

您的问题不清楚:您是否通过多个别名访问同一台主机?您是否访问共享 的不同主机.profile?您是否尝试根据源主机名或目标主机名执行命令?

如果希望在不同的远程主机上获得不同的效果,只需测试远程主机名:

case "$(hostname)" in
  host1) cd /var/www/site1;;
esac

如果你希望在同一台主机上实现不同的效果,可以SendEnv使用~/.ssh/config发送环境变量(假设你正在使用OpenSSH客户端)。这些需要通过AcceptEnv在服务器端执行指令,但通常情况并非如此。但是LC_*变量通常允许通过,因此您可以使用它们传递信息。在客户端,运行LC_VIRTUAL_HOST=site1 ssh common-host.provider.com。在.profile服务器上,写入

case "$LC_VIRTUAL_HOST" in
  host1) cd /var/www/site1;;
esac

相关内容