タグ別アーカイブ: OpenSSH

cronやプログラムでssh越しrsyncを利用するときにカナリ便利なオプション

1. 始めに

同期が必要な場面って結構ある。ローカルのディレクトリ間の同期はもちろん、特にインターネット越しの同期が必要になることって結構ある。

そんなときには決まってrsyncの出番だ。ファイルの変更を検知し、よしなに同期してくれる。そんな頼もしいrsync。枯れたソフトウェアなのでホスティングを借りたときにftpだけじゃなくてsshとrsyncが付いてきたりもする。すでに広まっているからすごく便利。

で、さて、そんな便利なrsyncなんだけれどcronなどで定期的、自動的にrsyncを実行するときにはチョットした問題があったりする。

その問題とは二点。一つはパスワード無しで認証を通す必要があること。もう一つはフィンガープリントと呼ばれるsshのホストの正当性を確かめる確認が出ること、だ。

この問題はどちらも、プログラムやcronなどプロンプト(よろしいですか?[y/n]的なアレ)を処理できない端末でrsyncを利用する際に解決しなければいけない問題。

前者のパスワード無しで認証を通すためにはsshの公開鍵認証を利用する。コレに関しては文献がいろいろとあるので参照されたし。

rsyncとsshで別のマシンにバックアップ

rsync over ssh を使ってバックアップ

さて、今回は二つ目の問題点、フィンガープリントのプロンプトを越えるためのオプションについて考える。環境としてsshクライアントとしてOpenSSHを想定している。他だとうごかないかも。

続きを読む cronやプログラムでssh越しrsyncを利用するときにカナリ便利なオプション

scpで指定アドレスを使用してコピーする

ルータにプロバイダが2本設定されていて、ローカルのIPアドレス毎にどちらを使うか振り分けている環境で、明示的にどちらを使うか振り分けたい事があったのでメモ。
具体的にはリモートに数十GBのファイルをUPしたいけど、うちで使っているOCNでは、一日に30GB以上のUPは規制対象なので、上手いことやりたいって感じ。

UbuntuでIPアドレスを複数設定してやる。
/etc/network/interfacesに記述。
bondingもしているので、ちょっと普通と記述が違うけど。

iface eth0 inet manual
iface eth1 inet manual

auto bond0
iface bond0 inet static
address 192.168.34.1
netmask 255.255.255.0
network 192.168.34.0
broadcast 192.168.34.255
gateway 192.168.34.100
slaves eth0 eth1
bond-mode 0
bond-miimon 100

auto bond0:0
iface bond0:0 inet static
address 192.168.34.2
netmask 255.255.255.0

eth0, eth1を束ねたbond0に2つのローカルアドレス(192.168.34.1, 192.168.34.2)
を設定してる。
設定したら、sudo /etc/init.d/networking restartか再起動で。

あとはルータ(ix2015)で

ip access-list secondary permit ip src 192.168.34.2/32 dest any

route-map ocn2 permit 10
  match ip address access-list secondary
  set interface FastEthernet0/0.2

みたいな事をしてやれば、192.168.34.2のローカルアドレスは、外部に出る時、2本目のプロバイダを使用する。

で、scpの方は簡単で

scp -o BindAddress=192.168.34.2 ./localfiles remote.address:~/

で出来た。ちなみにwgetでも –bind-addressで指定できるし、sshでも -b で出来る。

FreeBSDのホストにsshが繋がらない時のある対処法

あるホストでsshの調子が悪くなった。
sshのサーバ側、繋がれる待ち受け側はFreeBSD7.2-R i386

OpenSSH is a derivative of the original and free ssh 1.2.12 release by Tatu Ylonen

クライアント側、繋ぎにいく側はFreeBSD。

これだとどこからもつながらない。

sshclient.l2tp.org%ssh badssh.l2tp.org
Connection to 10.0.0.1 timed out while waiting to read

FreeBSDだと繋がらない、というのは、windowsのputtyだと時間がかかるけどつながる。なんでだろう。

FreeBSDからtelnetするとこんな感じ

sshclient.l2tp.org%telnet badssh.l2tp.org 22
Trying 121.1.227.95...
Connected to badssh.l2tp.org.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.1p1 FreeBSD-20080901

とちゃんと応答がある。

予想だと名前解決あたりでこけてるんじゃないかな、と。

と思ったらマジでこけてた。resolv.confの最初がつながらないホストが指定してあった。

おそらくここのタイムアウト待ちして次のname serverに聞きに行く前に、freebsdのsshクライアントがタイムアウト処理しちゃうんだと思われる。それに対してputtyだとタイムアウト値が長い模様。