Ssh

從外部程序獲取 SSH 客戶端程序內的工作目錄

  • October 12, 2020

我已經通過 SSH 連接到遠端機器。我想ls在該遠端機器上獲取目前工作目錄(理想情況下執行類似的命令),但來自該程序之外。

這是我的流程

$ ps
49100 ttys001    0:00.21 -zsh
52134 ttys002    0:00.21 -zsh
52171 ttys002    0:00.05 ssh user@host.com

終端 2 (ttys002) 是我目前通過 SSH 連接到遠端機器的地方。

是否可以從客戶端電腦獲取遠端主機的目前工作目錄?即不只是鍵入pwd終端 2。

如果我執行lsof,我可以得到程序的本地機器上的目前工作目錄,但不能得到遠端機器的目前工作目錄。

~ $ lsof -p 52171
COMMAND   PID    USER   FD      TYPE             DEVICE SIZE/OFF                NODE NAME
ssh     52175   falky  cwd       DIR                1,4     2816              994619 /Users/falky

如果這是不可能的,在通過 SSH 連接到遠端機器之前我可以做些什麼來讓我這樣做嗎?例如,我可以設置一個偽終端嗎?或者我可以在遠端機器上安裝一些東西,將 ping 發送回我的本地機器嗎?這裡的任何建議/方向都會有所幫助。

如果這是不可能的,在通過 SSH 連接到遠端機器之前我可以做些什麼來讓我這樣做嗎?

您可以在“連接共享模式”下啟動 ssh 客戶端:

ssh -M -S ~/.ssh/%r@%h:%p user@localhost
user@localhost's password:
...
user@localhost$ echo $$
5555
user@localhost$ cd /some/path

在另一個終端:

ssh -S ~/.ssh/%r@%h:%p user@localhost
<no need to enter the password again>
user@localhost$ ls -l /proc/5555/cwd
<listing of /some/path>

有關and選項,請參閱ssh(1)手冊頁,並參閱config 選項。-S-Mssh_config(1)Control*

引用自:https://unix.stackexchange.com/questions/614052