GNOME端末を開いた後、次のようにしてSSHを介してリモートホストに接続しました。
gnome-terminal -- bash -c "ssh -i ~/.ssh/virtual_machines remote@remotehost; exec bash;"
しかし、SSH経由でリモートホストに接続すると、sudo su test
visudoにコマンドを追加しました。
%wheel ALL=(ALL) NOPASSWD:/bin/su test
テストに切り替えると、テストユーザーはプログラムを起動し、そのプログラムを保持します。
.bashrcファイルの変更は、そのユーザーとしてSSHを使用し、プログラムが自動的に起動したくないため、オプションではありません。
答え1
セッションとして実行されるログインシェルをgnome-terminal
起動するウィンドウ/タブを起動するとします。test
remotehost
gnome-terminal -- ssh -i ~/.ssh/virtual_machines -t remote@remotehost 'exec sudo -iu test'
su
と組み合わせると、sudo
私には少し愚かなように聞こえます。何ができるかをsudo
定義su
でき、誰が何をできるかを定義するための柔軟性を高めます。
%wheel ALL=(test) NOPASSWD: ALL
グループ内のすべてのユーザーは、wheel
asを含むパスワードプロンプトなしでユーザーとして任意のコマンドを実行できます。test
sudo -i -u test
test
答え2
後続のexec bash
sshコマンドは何もしません。 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"