理科系の勉強日記

Linux/Ubuntu/Mac/Emacs/Computer vision/Robotics

sshによるPort Forwardingとrsync

Port Forwarding

Portforwardingとは,ローカルの特定のポートへのアクセスを別のマシンの指定したポートへ転送することである.
Linuxではssh(Secure SHell)によって実現することができる.

ssh -fN -L1101:[Remote2]:22 [Remote1] -l [username]

root権限で上記のコマンドを実行すると,ローカルの1101番ポートをRemote1経由でRemote2の22番につなぐことができる.
オプションについて調べておくこと.(-lはRemote1かRemote2かどちらのusernameだろう?)

rsync

Port Forwardingができたら,rsyncコマンドを使ってファイルの転送をしてみる.
rsyncでローカルの1101番ポートを指定してファイルの転送を行えば,それはRemote1を経由してRemote2の22番ポートに転送をしていることになる.

rsync -avz -e 'ssh -p 1101' /home/nakagawa/www/* nakagawa@localhost:/home/nakagawa/hoge

/home/nakagawa/www/以下のすべてのファイルを1101番ポートを経由してlocalhost(Remote2)の/home/nakagawa/hoge/以下に転送をする.

MEMO

ssh -fN -L22:[Remote2]:22 [Remote1] -l [username]

とするとうまくいかない.(何故?すでに使われている?)

ポート番号の1〜1023はウェルノウンポートと呼ばれており,すでに予約されたポート番号となっている.
例えば
25: SMTP(Simple Mail Transfer Protocol)  メール送信用のポート
53: DNS(Domain Name Server)  ドメインネームサーバー用のポート
80: http(Hyper Text Transfer Protocol)  wwwに接続するためのポート
110: pop3:(Post Office Protocol - Version 3) メール受信用のポート

そして22番はsshのリモートログイン用のポートである.