Login

如何在 ssh 登錄時自動更改目錄?

  • December 7, 2021

我正在嘗試ssh在登錄時自動更改為特定目錄。我嘗試使用以下指令使該行為正常工作~/.ssh/config

Host example.net
LocalCommand "cd web"

但是每當我登錄時,我都會看到以下內容:

/bin/bash: cd web: No such file or directory

儘管web我的主目錄中肯定有一個文件夾。即使使用絕對路徑也會給出相同的資訊。需要明確的是,如果我cd web在登錄後輸入,我會進入正確的文件夾。

我在這裡想念什麼?

編輯:

引號/絕對路徑的不同組合會給出不同的錯誤消息:

LocalCommand "cd web"
/bin/bash: cd web: No such file or directory

LocalCommand cd web
/bin/bash: line 0: cd: web: No such file or directory

LocalCommand cd /home/gareth/web
/bin/bash: line 0: cd: /home/gareth/web: Input/output error

這讓我認為引號不應該在那裡,並且發生了另一個錯誤。

cd 是一個內置的shell。LocalCommand 執行如下:

/bin/sh -c <localcommand>

您想要做的事情無法通過 SSH 完成;您需要以某種方式修改 shell,例如通過bashrc/bash_profile.

<將近十年後的編輯……>

LocalCommand反正不是你想要的。那是在你的機器上執行的。

你想要RemoteCommand。像這樣的東西對我有用:

Host example.net
 RemoteCommand cd / && exec bash --login
 RequestTTY yes

這有效:

ssh server -t "cd /my/remote/directory; bash --login"

如果目錄不存在則創建目錄:

ssh server -t "mkdir -p newfolder; cd ~/newfolder; pwd; bash --login"

如果您不添加bash到路徑的末尾,那麼您將在cd命令執行後退出。如果你不添加--login,那麼你~/.profile就沒有來源。

引用自:https://serverfault.com/questions/167416