同じグループの別のユーザーのSSHキーを使用してサーバーに接続する同じグループのユーザーからbashスクリプトを実行する


2

このようなスクリプトを作成しました。

sync.sh
#!/bin/bash
#1st backup the file
scp user-1@ip-1:/directory/file1 /backup/location/
#2nd sync/overwrite my file to that server
scp /local/file2 user-1@ip-1:/directory/file1
#3rd restart service associated with that file
ssh -t user-1@IP-1 << EOF
  sudo systemctl restart some.service
EOF

スクリプトの許可と特権は次のとおりです。

-rwxr-x--x. 1 user-1 group-1 ~/sync.sh

からの間user-1@localにssh-keysが構成されてuser-1@IP-1います。サービスを再起動するようにvisudoを構成しましたuser-1

私はしたいother_userでは、group-1このスクリプトを実行することができますが、この方法では動作しませんのssh-keyは、それが別のキーを生成しようとします。これを行うために何が欠けていますか?

または、別のアプローチを使用する必要がありますか?ファイルの移動にrsyncを使用できることを見てきましたが、サービスの再起動はどうですか?

皆さん、ありがとうございました。

回答:


0

これは安全な方法ではありません。

キーはユーザーを認証するものです。

  1. 各ユーザーに独自のキーを付与するか、別のユーザー名を使用するだけで、全員が他のユーザーとしてログインできます。

  2. 各ユーザー名が環境変数から取得されるように、スクリプトを変更します。

  3. auth-agentを使用してキーを管理します。これにより、スクリプトのキーへのパスを配置する必要がなくなります。

  4. たくさんのサーバーとたくさんのユーザー?

    • おそらくKerberosとPAMを調べる必要があります。

    • 別のオプションは、ユーザーのリストをsudoersファイルに追加するスクリプトを作成し、そのスクリプトをssh経由で各サーバーのスーパーユーザーシェルにパイプすることです。


はい、私は同意します。それが同じグループのユーザー内のみにある理由です。とにかく私の唯一のオプションは、グループ間で共有される単一のユーザーを作成することです。(正直に言うと最良の解決策ではありません)。各ユーザー名が取得されるようにスクリプトを変更する場合、他のサーバーも変更し、このグループの新しいユーザーが含まれるたびにそれらをsudoersリストに追加する必要があり、単純な小さなスクリプトでは多くの作業のように思えます。
kgtr

@kgtrああ。はい。いくつかの詳細情報で私の回答を更新しました:)
svin83
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.