簡體   English   中英

Plink不會在連接時提供bashrc或bash_profile

[英]Plink does not source bashrc or bash_profile on connect

我試圖在Windows上使用plink作為ssh替代品,但我發現當plink連接到遠程linux機器時,它不會提供.bash_profile或.bashrc。
我應該創建一個不同的點文件嗎? 還是有其他選擇嗎?

例如,我的bashrc文件在我的路徑中添加了一個目錄。 這個目錄包含我想要使用的額外程序,一個是python。

這不起作用:

plink host python

這將是:

plink host "source .bashrc;python"

當我在沒有命令參數的情況下使用plink時,它會輸出.bash_profile並且一切正常,但看起來僅通過發送命令plink將不會獲取任何文件。

有解決方法嗎?

接受的答案幫助我使用plink解決了同樣的問題。 這里有一些可以幫助人們未來的細節:

當使用plink運行單個命令的ssh連接時,不會將bash作為“交互式登錄shell”調用,因此它不會運行/ etc / profile,〜/ .bash_profile,〜/ .bash_login或〜/ .profile(參見bash手冊頁)。

為了我的目的,我需要〜/ .profile在plink命令行中傳遞的命令之前運行。

可以將強制命令添加到該密鑰的authorized_keys文件中(請參閱sshd手冊頁)。 強制命令(例如運行〜/ .profile)會阻止它運行plink指定的命令,因此要使它同時執行這兩項操作,強制命令應該是執行運行.profile然后執行原始plink命令的腳本。 后者存儲在環境變量$ SSH_ORIGINAL_COMMAND中,因此您的腳本可以執行此操作

source .profile
$SSH_ORIGINAL_COMMAND

然后在同一行的鍵之前的〜/ .ssh / authorized_keys文件中指定腳本,如下所示:

command="source forced_command.script" ssh-rsa A3AABzaC1yc...

如果您只是通過ssh或plink連接到遠程主機,它將啟動登錄帳戶的默認shell。 如果該shell是bash,bash將自動獲取.bash_profile。

如果通過ssh或plink連接到遠程主機,要求執行命令,ssh將嘗試執行該命令。

您想要實現的目標可以通過使用ForcedCommand來完成。 另見:

將強制命令設置為執行以下兩項操作的腳本:

  1. 找到.bash_profile
  2. 運行原始命令(env vars $ SSH_ORIGINAL_COMMAND或$ SSH2_ORIGINAL_COMMAND)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM