SSH のトンネルについての質問です。サーバは、CentOS4 or 5 です。


サーバAからサーバBにログインしたときに、サーバBから、サーバAにデータを送ったりすることはできるでしょうか?
例としては、サーバBのデータをサーバAにバックアップする場合です。なんでこんなことをするかというと、ユーザ権限の
問題で、サーバBのあるユーザからサーバAに送りたいのです。サーバBからサーバAにログインできれば簡単なのですが、
できない場合なのです。(サーバAがローカルで、サーバBがリモートの場合など)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/07/09 18:40:46
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:guja No.2

回答回数40ベストアンサー獲得回数8

ポイント70pt

サーバAからサーバB共にSSHサーバーが立ち上がっているならば、

SSHにはポートフォワーディングの機能がありますが、これを使えば何とかなるかもしれません。

http://www.turbolinux.com/products/server/11s/user_guide/x9016.h...


通常ポートフォワーディングでは、ローカル→サーバーへSSH接続し、そのときローカルのポートをサーバーに転送します。

例)ssh -L 20000:localhost:10000 user@server1

 localhost:20000へ接続すると、server1の10000ポートへ転送


上記の場合は、ローカルでポートを待ち受け、それをリモートに転送します。

それとは逆に、リモートでポートを待ち受け、それをローカルに転送することもできます。

例)ssh -R 40000:localhost:30000 user@server1

 server1:30000へ接続すると、ローカルの40000ポートへ転送



これを利用して、下記のようにすれば、サーバーからローカルへscpすることができます。

$ssh -R 40022:localhost:22 user@server1

※server1にsshで接続、server1の40022はlocalhost(ローカル)の22に転送


$scp -P 40022 filename localhost:

※scpでファイル転送。転送先はserver1の40022=localhost


参考になる絵がなくてわかりづらくて申し訳ないのですが、以上の方法はどうでしょうか。

id:kaiketsu

おお、素晴らしい。試してみます。

2010/07/07 00:17:05

その他の回答2件)

id:syntaxerror No.1

回答回数354ベストアンサー獲得回数56

ポイント5pt

サーバAからサーバBにsshでログインできるのなら、サーバAからサーバBに対してscpコマンドを使えばできます。

scp -r userB@サーバB:data/dir-B/files* ./dir-A

こんな感じです。


http://cns-guide.sfc.keio.ac.jp/2004/2/6/2.html

id:kaiketsu

サーバBへのログインアカウントでないアカウントのデータをバックアップしたいので難しいのです。

2010/07/06 18:11:05
id:guja No.2

回答回数40ベストアンサー獲得回数8ここでベストアンサー

ポイント70pt

サーバAからサーバB共にSSHサーバーが立ち上がっているならば、

SSHにはポートフォワーディングの機能がありますが、これを使えば何とかなるかもしれません。

http://www.turbolinux.com/products/server/11s/user_guide/x9016.h...


通常ポートフォワーディングでは、ローカル→サーバーへSSH接続し、そのときローカルのポートをサーバーに転送します。

例)ssh -L 20000:localhost:10000 user@server1

 localhost:20000へ接続すると、server1の10000ポートへ転送


上記の場合は、ローカルでポートを待ち受け、それをリモートに転送します。

それとは逆に、リモートでポートを待ち受け、それをローカルに転送することもできます。

例)ssh -R 40000:localhost:30000 user@server1

 server1:30000へ接続すると、ローカルの40000ポートへ転送



これを利用して、下記のようにすれば、サーバーからローカルへscpすることができます。

$ssh -R 40022:localhost:22 user@server1

※server1にsshで接続、server1の40022はlocalhost(ローカル)の22に転送


$scp -P 40022 filename localhost:

※scpでファイル転送。転送先はserver1の40022=localhost


参考になる絵がなくてわかりづらくて申し訳ないのですが、以上の方法はどうでしょうか。

id:kaiketsu

おお、素晴らしい。試してみます。

2010/07/07 00:17:05
id:doropon No.3

回答回数94ベストアンサー獲得回数16

ポイント5pt

普通にsshでA -> B の接続で B - >A の通信ができてしまうと、

とてつもないセキュリティホールになるので、とりあえずできません。

アカウントに制限があると厳しいのですが、

ppp over ssh

って方法でvpnを張れます。昔やったなあと。懐かしい感じです。

http://www.google.co.jp/search?sourceid=navclient&ie=UTF-8&rlz=1...

権限があって、セキュリティの保持ができて、という場合にしか難しいです。

バックアップだけが目的であれば、

サーバBにサーバAからログイン

サーバBにはアカウントがあるが、サーバAにはアカウントが無い。

で、あってますかね。。

バックアップして欲しいデータをtarで固めてscpなりで持っていくのが妥当かなとは思います。

サーバB で tar zcvf /tmp/backup.tar.gz /home/daredare

サーバA から scp サーバB:/tmp/backup.tar.gz .

とか。

>ユーザ権限の問題で、サーバBのあるユーザからサーバAに送りたいのです。

>サーバBへのログインアカウントでないアカウントのデータをバックアップしたいので難しいのです。

ちょっと方向がみえないのですが、

アカウントの国境を超えるのはセキュリティ上困難です。

id:kaiketsu

2の回答を試してみます。

2010/07/07 00:17:42

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません