Windows
使用 cygwin 從 windows ssh SendEnv 到 linux 伺服器
我正在從 windows cygwin 對 Open SUSE linux 伺服器進行 ssh。我正在嘗試通過 ssh 命令發送我的一個本地環境變數,以便我可以在登錄後立即載入一些特定的 .bashrc 文件。這是我嘗試過的。
Windows 機器有這個環境變數
IDENTITY=samiron echo %IDENTITY% samiron
在linux機器上我有
vim /etc/ssh/sshd_config AcceptEnv IDENTITY
在
/home/user/.bashrc
我寫過類似的東西export ME=$IDENTITY
我的計劃是有一個像文件一樣的文件
.bashrc.samiron
並source ~/.bashrc.$ME
從.bashrc
文件中執行。但是,我正在像下面那樣做 ssh 並期望變數
$ME
包含"samiron"
ssh -o SendEnv=IDENTITY user@server.com
但是登錄後
user@server:~> echo $ME
它什麼也沒顯示。任何人都可以建議我在這裡做錯了什麼?
在它可以按預期工作之前應該滿足這兩個條件:
- 您的 ssh 伺服器必須配置為接受來自本地客戶端環境的變數轉發。由於允許此類行為可能存在安全風險,因此預設情況下通常禁用它。您可以通過在 ssh 伺服器配置中指定**“AcceptEnv”指令來啟用它。所以把這樣的東西放到/etc/ssh/sshd_config文件中並重新載入ssh 伺服器服務(變數名可以包含萬用字元,你可以指定多個用空格分隔的變數,細節在man sshd_config**)
AcceptEnv VARIABLE_NAME 2. 此功能僅適用於版本 2的 ssh 協議。如果沒有更改(**“協議”**指令),這幾乎在所有現代 Linux 發行版中都預設實現。