「sshとtarとsudoを組み合わせてバックアップする方法」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「sshtarsudoを組み合わせて、ファイルのバックアップをするときの例です。 __TOC__ == 概要 == この例は、良いやり...」)
(相違点なし)

2014年3月1日 (土) 11:54時点における版

sshtarsudoを組み合わせて、ファイルのバックアップをするときの例です。

概要

この例は、良いやり方ではありません。

ssh+tarでのデータ転送

tarコマンドとsshコマンドを組み合わせて、データ転送ができます。

% tar jcf - foo | ssh -l user bsd "tar jxf - -C /home/user/foo/backup"

sudo: no tty present and no askpass program specified

tarコマンドとsshコマンドとさらにsudoコマンドを組み合わせて、データ転送しようとしたときに、問題がおきました。

ssh越しにtarコマンドを実行しようとするとttyないか、askpassが指定されていないというエラーが出ました。

% tar jcf - foo | ssh -l user bsd "sudo tar jxf - -C /home"	
sudo: no tty present and no askpass program specified

sshの-tオプションだけでは、解決できませんでした。

% tar jcf - foo | ssh -t -l user bsd "sudo tar jxf - -C /home"	
Pseudo-terminal will not be allocated because stdin is not a terminal.
Password for user@bsd:
sudo: no tty present and no askpass program specified

visudosudoersを書き換えます。

sudo visudo

以下のオプションを追加しました。

Defaults visiblepw

tar出力がsshstdinに入るので、sudo対するパスワードが入力できません。

% tar jcf - foo | ssh -t -l user bsd "sudo tar jxf - -C /home"	
Pseudo-terminal will not be allocated because stdin is not a terminal.
Password for user@bsd:
Password:Sorry, try again.
Password:Sorry, try again.
Password:Sorry, try again.
sudo: 3 incorrect password attempts

仕方がなく、一時的にパスワードを無効化しました(非推奨)。

user ALL=(ALL) NOPASSWD: ALL

最後に

sudoersで開けた穴は、塞ぎましょう。

関連項目

ssh

sudo