「sshとtarとsudoを組み合わせてバックアップする方法」の版間の差分
提供: セキュリティ
行1: | 行1: | ||
− | [[ssh]] | + | [[ssh]]とtarと[[sudo]]を組み合わせて、ファイルのバックアップをするときの例です。 |
__TOC__ | __TOC__ | ||
行6: | 行6: | ||
この例は、良いやり方ではありません。 | この例は、良いやり方ではありません。 | ||
== ssh+tarでのデータ転送 == | == ssh+tarでのデータ転送 == | ||
− | + | 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]]コマンドを組み合わせて、データ転送しようとしたときに、問題がおきました。 | |
− | [[ssh]] | + | [[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]]対する[[パスワード]]が入力できません。 | |
<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]]で開けた穴は、塞ぎましょう。 | ||
== 関連項目 == | == 関連項目 == | ||
− | + | * [[Secure Shell]] | |
− | + | * [[sudo]] | |
− | + | * [[scp]] | |
− | + | * [[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
sudo visudo
以下のオプションを追加しました。
Defaults visiblepw
tar出力がsshのstdinに入るので、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で開けた穴は、塞ぎましょう。