11

Windowsでsshの代替としてplinkを使用しようとしていますが、plinkがリモートのLinuxマシンに接続すると、.bash_profileまたは.bashrcをソースしないことがわかりました。
作成する必要のある別のドットファイルはありますか?または別のオプションはありますか?

たとえば、私のbashrcファイルは私のパスにディレクトリを追加します。このディレクトリには、私が使用したい追加のプログラムが含まれています。1つはPythonです。

これは機能しません:

plink host python

これはどこになりますか:

plink host "source .bashrc;python"

コマンドパラメータなしでplinkを使用すると、.bash_profileが提供され、すべてが正常に機能しますが、コマンドを送信するだけでは、plinkはどちらのファイルも提供しないようです。

回避策はありますか?

4

2 に答える 2

9

受け入れられた答えは、plinkを使用して同じ問題を解決するのに役立ちました。これは、将来人々を助けるかもしれないもう少し詳細です:

plinkを使用して単一のコマンドを実行するためにssh接続が確立されると、bashは「対話型ログインシェル」として呼び出されないため、/ etc / profile、〜/ .bash_profile、〜/ .bash_login、または〜/は実行されません。 .profile(bashのマニュアルページを参照)。

私の目的では、plinkコマンドラインでコマンドを渡す前に〜/.profileを実行する必要がありました。

そのキーの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...
于 2013-07-02T12:55:10.057 に答える
7

sshまたはplinkを介してリモートホストに接続するだけで、ログインアカウントのデフォルトシェルが起動します。そのシェルがbashの場合、bashは自動的に.bash_profileを取得します。

sshまたはplinkを介してリモートホストに接続し、実行するコマンドを要求すると、sshはそのコマンドだけを実行しようとします。

達成したいことは、ForcedCommandを使用して実行できます。こちらもご覧ください:

強制コマンドを、次の2つのことを実行するスクリプトに設定します。

  1. .bash_profileをソースします
  2. 元のコマンドを実行します(env vars $SSH_ORIGINAL_COMMANDまたは$SSH2_ORIGINAL_COMMAND)
于 2010-08-05T09:55:44.713 に答える