修改 SSH 規則的 .profile

修改 SSH 規則的 .profile

我希望在 .profile 中建立以下腳本,這樣每個 SSH 會話都會直接進入其位置:

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

ETC。

幫助! :)

答案1

我非常確定 SSH 不會將主機名稱發送到伺服器(它只是在本地使用它來查找 IP 位址並檢查金鑰等)。至少,不是以可在 shell 腳本中使用的方式。

查看輸出env- The only hostname is the canonical name, 無論 ssh 指令中使用什麼名稱。

一些 SSH 用戶端和一些 SSH 伺服器允許客戶端為一個或多個環境變數指定一個值,可以想像,您可以使用它來告訴伺服器要切換到哪個目錄。例如,參見膩子配置、連接、數據或 OpenSSH發送環境選項。

否則,您對於每個具有不同網域的網站都有一個使用者 ID,或者您必須為使用者提供一個選單。

答案2

您的問題不清楚:您是否透過多個別名到達同一主機?您是否正在存取共享 的不同主機.profile?您是否嘗試根據來源主機名稱或目標主機名稱執行命令?

如果你想在不同的遠端主機上有不同的效果,只需測試遠端主機名稱:

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

如果你想在同一台主機上有不同的效果,你可以使用SendEnv你的指令~/.ssh/config發送環境變數(假設您正在使用開放SSH客戶)。這些需要啟用AcceptEnv伺服器端的指令,但情況通常並非如此。然而,LC_*變數通常是允許通過的,因此您可以使用它們來傳遞訊息。在客戶端,運行LC_VIRTUAL_HOST=site1 ssh common-host.provider.com.在你的.profile伺服器上,寫

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

相關內容