端末を開き、SSHを実行してユーザーを切り替える

端末を開き、SSHを実行してユーザーを切り替える

GNOME端末を開いた後、次のようにしてSSHを介してリモートホストに接続しました。

gnome-terminal -- bash -c "ssh -i ~/.ssh/virtual_machines remote@remotehost; exec bash;"

しかし、SSH経由でリモートホストに接続すると、sudo su testvisudoにコマンドを追加しました。

%wheel  ALL=(ALL)       NOPASSWD:/bin/su test

テストに切り替えると、テストユーザーはプログラムを起動し、そのプログラムを保持します。

.bashrcファイルの変更は、そのユーザーとしてSSHを使用し、プログラムが自動的に起動したくないため、オプションではありません。

答え1

セッションとして実行されるログインシェルをgnome-terminal起動するウィンドウ/タブを起動するとします。testremotehost

gnome-terminal -- ssh -i ~/.ssh/virtual_machines -t remote@remotehost 'exec sudo -iu test'

suと組み合わせると、sudo私には少し愚かなように聞こえます。何ができるかをsudo定義suでき、誰が何をできるかを定義するための柔軟性を高めます。

%wheel  ALL=(test) NOPASSWD: ALL

グループ内のすべてのユーザーは、wheelasを含むパスワードプロンプトなしでユーザーとして任意のコマンドを実行できます。testsudo -i -u testtest

答え2

後続のexec bashsshコマンドは何もしません。 SSHセッションではない初期シェルでは、セミコロンでコマンドを区切ります。 SSHセッション内でコマンドを開始するには、実行するコマンドを追加するだけです。

次に、ユーザーテストに切り替えるのはどうですか?

  • リモートホストにSSHを接続する前

    sudo su test
    ssh remotehost programname
    

    .ssh/authorized_keysこれを行うには、ユーザーテスト用の公開鍵を含むファイルをリモートホストに作成する必要があるかもしれません。これにより、パスワードなしでログインが可能になります。

  • または、リモートホストにSSHで接続するとき?

    ssh test@remotehost programname
    

    これを行うには、次を.ssh/authorized_keys含むリモートホストにファイルを生成する必要があります。あなたの公開鍵。これにより、パスワードなしでログインが可能になります。

  • それともこれを行うことができます。

    ssh -t remotehost "sudo su test -c programname"
    

関連情報