web-dev-qa-db-ja.com

同じUbuntuインストールでSSHを別のユーザーとして実行するにはどうすればよいですか?

私は、ウェブサイトをマシンにダウンロードしてすべてをセットアップする一連のコマンドを実行するスクリプトを作成しています。

そのため、ほとんどのコマンドにはルートアクセスが必要です。たとえば、/etc/Apache2/sites-availableにvhostを追加、有効化、Apacheを再起動など...

そのためには、Sudoを指定してスクリプトを実行する必要があります。

Sudo ./install-website.sh

Webサイトは、パスワードなしのSSHアクセスでセットアップされたgitリポジトリを備えたサーバー上にあります。ただし、キーは私のホームフォルダーにあり、ルートのホームフォルダーにはないため、ユーザーdanに対してのみ機能します。

したがって、この部分に到達すると:

git clone [email protected]:git-repo $PATH_TO_INSTALLATION

Sudoでスクリプトを開始したため、gitコマンドを開始しようとしているユーザーはrootです。そのため、ホストはホストのユーザーのパスワードを要求し続けます。

私は次のコマンドを試しました:

Sudo -u $Sudo_USER git clone [email protected]:git-repo $PATH_TO_INSTALLATION

しかし、それでもホストのユーザーのパスワードを要求していました。

Sudo$Sudo_USERのホームパスを使用するように指示することはできますか?

ほとんどのものは変数であり、複数のマシンでこれを実行するため、変数でなければなりません。

7
Dan

代替1-Sudoの構成

Sudoはsudoersコマンドで設定する必要があるvisudoファイルで設定します。

この構成ファイルは、オプションenv_resetを使用して特定の環境変数をオーバーライドできます。どうやって進める:

visudo

次に、次のような行を見つけます。

Defaults env_reset 

その後に追加します(例:HOME環境の例):

Defaults env_keep = "HOME"

この例は、お持ちのすべてのSudo構成用です。ユーザー/グループごとに指定することもできます。 sudoersのマニュアルページ を参照してください。

代替2-SSHの構成

SSHの構成ファイルを使用して、ユーザー、使用するキーなどを指定できます。 SuperUser で説明しました。

提案された解決策(ただし、欠落しているビットおよび想定ビットを修正する必要があります)、ファイル/root/.ssh/configを編集し、その許可chmod 0600 /root/.ssh/configを設定します。

Host host.com
  User dan
  IdentityFile /home/dan/.ssh/id_rsa

次に、rootとして次のコマンドを実行すると、適切なSSH IDが使用されます。

git clone Host.com:git-repo $PATH_TO_INSTALLATION
4
Huygens

スクリプトはrootとして実行されているため、su権限のないユーザーに直接アクセスできます。ルーツはSudoである必要はありません、Sudoはルーサー用です;-)。

非特権ユーザーがdanであり、周囲のスクリプトで$ PATH_TO_INSTALLATIONが設定されていると仮定します。

su -lc "git clone [email protected]:git-repo $PATH_TO_INSTALLATION" dan

$PATH_TO_INSTALLATIONdanによって書き込み可能でなければならないことに注意してください。

3
zwets

かなり前にssh-keygenを使用してsshキーを生成したとき、デフォルトのパス~/.ssh/id_rsaを選択しませんでした。 zwets ' comment のおかげで、それを思い出しました。キーを変更し、~/.ssh/id_rsaに入れました。

これで、両方のコマンドが機能します。

  1. Sudoあり

    Sudo -u $Sudo_USER git clone [email protected]:git-repo $PATH_TO_INSTALLATION
    
  2. zwets 'answer で示唆されているように

    su -lc "git clone [email protected]:git-repo $PATH_TO_INSTALLATION" $Sudo_USER
    
0
Dan