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

提供: セキュリティ
移動: 案内検索
(ページの作成:「sshtarsudoを組み合わせて、ファイルのバックアップをするときの例です。 __TOC__ == 概要 == この例は、良いやり...」)
 
 
行1: 行1:
[[ssh]]と[[tar]]と[[sudo]]を組み合わせて、ファイルのバックアップをするときの例です。
+
[[ssh]]とtarと[[sudo]]を組み合わせて、ファイルのバックアップをするときの例です。
  
 
__TOC__
 
__TOC__
行6: 行6:
 
この例は、良いやり方ではありません。
 
この例は、良いやり方ではありません。
 
== ssh+tarでのデータ転送 ==
 
== ssh+tarでのデータ転送 ==
[[tar]]コマンドと[[ssh]]コマンドを組み合わせて、データ転送ができます。
+
tarコマンドと[[ssh]]コマンドを組み合わせて、データ転送ができます。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
% tar jcf - foo | ssh -l user bsd "tar jxf - -C /home/user/foo/backup"
 
% tar jcf - foo | ssh -l user bsd "tar jxf - -C /home/user/foo/backup"
 
</syntaxhighlight>
 
</syntaxhighlight>
 
== sudo: no tty present and no askpass program specified ==
 
== sudo: no tty present and no askpass program specified ==
[[tar]]コマンドと[[ssh]]コマンドとさらに[[sudo]]コマンドを組み合わせて、データ転送しようとしたときに、問題がおきました。
+
tarコマンドと[[ssh]]コマンドとさらに[[sudo]]コマンドを組み合わせて、データ転送しようとしたときに、問題がおきました。
  
[[ssh]]越しに[[tar]]コマンドを実行しようとすると[[tty]]ないか、askpassが指定されていないというエラーが出ました。
+
[[ssh]]越しにtarコマンドを実行しようとするとttyないか、askpassが指定されていないというエラーが出ました。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
% tar jcf - foo | ssh -l user bsd "sudo tar jxf - -C /home"
 
% tar jcf - foo | ssh -l user bsd "sudo tar jxf - -C /home"
行37: 行37:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
[[tar]]出力が[[ssh]]の[[stdin]]に入るので、[[sudo]]対する[[パスワード]]が入力できません。
+
tar出力が[[ssh]]の[[stdin]]に入るので、[[sudo]]対する[[パスワード]]が入力できません。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
% tar jcf - foo | ssh -t -l user bsd "sudo tar jxf - -C /home"
 
% tar jcf - foo | ssh -t -l user bsd "sudo tar jxf - -C /home"
行55: 行55:
 
[[sudoers]]で開けた穴は、塞ぎましょう。
 
[[sudoers]]で開けた穴は、塞ぎましょう。
 
== 関連項目 ==
 
== 関連項目 ==
=== ssh ===
+
* [[Secure Shell]]
{{ssh}}
+
* [[sudo]]
=== sudo ===
+
* [[scp]]
{{sudo}}
+
* [[rsync]]
<!-- vim: filetype=mediawiki -->
+
<!-- vim: filetype=mediawiki
 +
-->

2015年9月22日 (火) 19:24時点における最新版

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

概要

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

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で開けた穴は、塞ぎましょう。

関連項目