「PermitRootLogin no」の場合、リモートルートが所有するファイルのコピーをスクリプトします。

「PermitRootLogin no」の場合、リモートルートが所有するファイルのコピーをスクリプトします。

セキュリティ上の理由から、クラウドノード(sshを介してのみアクセス可能、廃止されたGUI、Debian 7を実行)を設定し、「PermitRootLogin no」を使用しています。一部のアプリケーションでは、一部のルート所有設定ファイルをリモートからローカルにコピーしたい(たとえば、ローカルクライアント設定)。そして再現性のために、私はこのスクリプトを書いたかったのです(間違ったコマンドラインで数回フラッシュした後)。リモートアクティベーションのベストプラクティスは何ですか?sudo スクリプトから(はい、パスワードを入力する必要があることを知っています。 -十分非対話型であればいいが必須ではない。 「PermitRootLogin no」が与えられると(物理アクセスがない場合)どうなりますか?私が試したいくつか:

(1):リモートで欲しいものがわからscpないので失敗します。 (AFAICS - 何か逃した?)scpsudo

(2)ヌードrsync-path:試してみました。

me@local ~ $ rsync --rsync-path='sudo rsync' remote:/path/to/file ${HOME}/backups/cloud_9/path/to/file
X11 forwarding request failed on channel 0
sudo: no tty present and no askpass program specified
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
...

グラフィックではなくAskpassを有効にできますか?普段着ダック- 見つかりません。ノートrsync-path 〜する(IIRC)「visiblepw」で動作しますが、裸で/なしでは動作しません。

(3) sudoers.d/visiblepw: DDGを発見

http://www.sudo.ws/pipermail/sudo-users/2009-August/004142.html
> [sudo-users] Error: sudo: no tty present and no askpass program specified
> Todd C. Miller Todd.Miller at courtesan.com
> Mon Aug 3 10:43:04 EDT 2009

> Recent versions of sudo will refuse to prompt for a password if no tty is present,
> since it is not possible to turn off echo in this case. You can [enable this]
> with a line like:

> Defaults visiblepw

だから私は作りました。

me@remote:~$ sudo cat /etc/sudoers.d/visiblepw 
> Defaults  visiblepw

これはうまくいきますが、上記のようにリモートechoでs pwを実行するとsudo...しかし、今は例えばssh remote 'sudo whatever'...誰も私のシェルを見ることができない限り可能です:-)

もっと良い方法があるのだろうか。私は何を逃したことがありませんか?もう一度申し上げますが、私はこれをスクリプトを通して実行したいと思います。

執筆中に発見したが見苦しく見せようとしなかったもう1つの事実(作成中に述べた)は次のとおりです。

(4)mkfifoバスケットボールでジャンプ:ビューにも苦手で、スクリプトの作成にも適していません。私は何を逃したことがありませんか?

ベストアンサー1

より良いアプローチは次のとおりです。アンシプール- SSHを介してリモートコントロールと対話する構成管理ツール。これにより、リモートSSH認証とsudoまたはsu操作が大幅に簡素化されます。

Ansible をインストールしてホストインベントリを構成した後、これを実行するコマンドは次のとおりです。

ansible remotehost -m fetch -a "src=/etc/sudoers dest=remote-soduers" -u root --sudo --ask-sudo-pass

単純なマニフェストを設定する必要がある場合:

cat > hosts <<EOF
[remotes]
remotehosts
EOF
ansible -i hosts remotehost -m fetch -a "src=/etc/sudoers dest=remote-soduers" -u root --sudo --ask-sudo-pass

あるいは、SSHで「-t」オプションを使用して疑似端末割り当てを強制することで、クイックワンタイムコマンドを実行できます。

ssh -t remotehost "sudo rsync -av /path/on/remote localuser@localhost:/path/on/local"

これにより、2つのパスワードプロンプトが表示される可能性が高くなります。 1 つは sudo 用で、もう 1 つは root@remote からローカルに再接続するためのものです。

おすすめ記事