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