SSH設定は自動的にリモートコマンドを実行します。

SSH設定は自動的にリモートコマンドを実行します。

VPNはSSH経由でサーバーに接続しています。プロジェクトを変更するには、サーバーにアクセスしてから常に同じプロセスを実行します。 project_userとしてログインします。私はshシェルを手に入れましたが、プロジェクトファイルへの書き込みアクセス権がないからです。

LocalCommand私の〜/ .ssh / configファイルでパラメータを使用してプロセスを自動化しようとしています。

LocalCommand sudo -iu project_user bash

それから

LocalCommand /bin/sh -c sudo -iu project_user bash

しかし、このうち何も変わりませんでした。接続した後もまだシェルにあり、上記のshコマンドを引き続き実行する必要がありました。

どんなアイデアがありますか?


更新:申し訳ありません。このLocalCommandパラメーターは、リモートコマンドではなくローカルコマンドに適用されます。サーバーに接続した後にリモートコマンドを実行できるssh_configパラメータはありますか?
それとも、少なくともbash initスクリプトを介してコマンドを実行できるようにシェルをbashに変更しますか?

答え1

OpenSSHサーバーを使用すると、コマンドをSSHキーに関連付けることができます。特定の SSH キーを使用してサーバーに接続すると、サーバーはクライアントが要求したコマンドを無視し、そのキーに関連するコマンドを実行します。これらのセッションでSSHキーを使用している場合は、この機能を使用してsudoコマンドを実行できます。

サーバー上のアカウントの「authorized_keys」ファイルを使用して設定できます。これsshd(8) のマニュアルページAuthorized_keys ファイル形式を記述します。簡単に言うと、authorized_keysはそれぞれ次に始まる一連の行です。

ssh-rsa AAAAB3NzaC1yc2...

行の前にコマンドディレクティブを追加できます。

command="sudo -iu project_user bash" ssh-rsa AAAAB3NzaC1yc2...

そのキーで認証されると、SSH サーバーは SSH クライアントが要求したコマンドを無視し、代わりに指定されたコマンドを実行します。 sudoプロセス(およびその中で実行されているシェル)が終了すると、sshセッションは閉じます。

このサーバーにssh用の2つのキーを設定することをお勧めします。 1つはこのsudo操作を実行し、もう1つは実行しません。サーバーに入る必要があるかもしれません。いいえ時々 sudo 操作を実行します。 sudo を実行するために使用されるキーは、少なくともサーバーにさらに複雑な設定がない場合、scp または sftp の実行には機能しません。

答え2

名前が示すように、LocalCommandコマンドはリモート(サーバー)コンピュータではなくローカル(クライアント)コンピュータで実行されます。サーバーで実行されるコマンドは、sshオプションとホスト名の後に渡す引数です。

デフォルトでは、命令を渡すと端末が生成されないため、オプションを渡して-t端末を生成します。代わりに、以下ssh yourserverを実行してください。

ssh -t yourserver exec sudo -iu project_user

答え3

リモートシステムにログインできる場合は、そこでデフォルトのシェルを変更できます。

chsh -s /bin/bash

関連情報