rsyncやSSH接続ができない状況の原因と解決方法

このQ&Aのポイント
  • rsyncやSSH接続ができない状況の原因と解決方法についてまとめました。
  • rsyncやSSH接続ができない場合、環境変数RSYNC_RSHの設定やPort番号の確認が必要です。
  • また、SSH接続時にはパーミッションエラーやSSHのバージョンの問題が発生することがあります。
回答を見る
  • ベストアンサー

rsyncやSSH接続ができません。

■rsyncがRSHでなく必ずSSH接続になってしまいます。 環境変数RSYNC_RSHもないのですが何故でしょうか? なおPort番号は22ではなく220をSSHにしています。 rsync -avz /home/test backup-server:/home/backup ssh: connect to host backup-server port 22: Connection refused rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(359) ■仕方なくSSHで接続しようと試みましたが今度はパーミッションエラーでした。 SSHのバージョンはサーバーは2で、クライアントはCentOS4.1ですがSSHの バージョンがわからない状態です。 SSHのバージョンはどう調べれば良いでしょうか? sync -avz -e "ssh -p 220 -oHostKeyAlias=test-server" /home/backup backup-server:/home/backup Permission denied (publickey). rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(359) なお、authorized_keysは、id_rsa.pubからコピーしてあり、644。 known_hostsには、test-serverは入っていて、644です。

  • php4
  • お礼率42% (373/888)

質問者が選んだベストアンサー

  • ベストアンサー
noname#20276
noname#20276
回答No.1

>Permission denied (publickey). とあるように、公開鍵へのアクセスに問題があると思われます。 >なお、authorized_keysは、id_rsa.pubからコピーしてあり、644。 authorized_keys を 600 に変更し、その格納ディレクトリである .ssh も 700 に変更して試してみて下さい。 >SSHのバージョンはどう調べれば良いでしょうか? プロトコルのバージョンのことだと思いますが、クライアントからは $ ssh -1 や $ ssh -2 とオプションを指定することで明示的にプロトコルバージョンを指定して接続できたと思います。サーバ側では sshd_config ファイルのprotocol を確認するのが早道だと思います。

関連するQ&A

  • IE上からrsyncスクリプトを実行したい。

    目的:IEからrsyncスクリプトを実行してWEBサーバAとWEBサーバBの    同期を取り、データを同じにしたいです。    IEのURL欄部分へスクリプトまでのフルパスを入力、実行すると    同期が取れるようにしたいのです。        *現状はIE上では無く、サーバ上からrsyncスクリプトを実行     すると同期が取れます。     コマンド:./test/script/testrsync.pl     IE上からフルパスでtestrsync.plを実行すると     Internal Server Errorとなってしまい、下記のエラーログ     が出てしまいます。 apacheのエラーログ ----------------------------------------------------------- Host key verification failed. rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(463) [sender=2.6.8] Host key verification failed. rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(463) [sender=2.6.8] [Mon Jun 1 00:00:00 2009] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: /test/script/testrsync.pl ------------------------------------------------------------ rsyncスクリプト ------------------------------------------------------------ #!/usr/local/bin/perl $RSYNC_SCRIPT = "/usr/local/bin/rsync --rsync-path=/usr/local/bin/rsync"; $RSYNC_OPTION = "-azpq -e ssh --delete"; $RSYNC_SVUSER = "user\@serverb:"; $TEST_DIR = "/test/hogehoge"; $REAL_DIR = "/test/hogehoge"; $DEBUG = "debuglog.txt"; open(DEBUG,">$DEBUG"); @SYNCDIR = ( "root/", ); foreach $SYNC (@SYNCDIR){ $CMD = "$RSYNC_SCRIPT $RSYNC_OPTION $TEST_DIR/$SYNC $RSYNC_SVUSER$REAL_DIR/$SYNC"; system($CMD); } close(DEBUG); ------------------------------------------------------------ 現在はcronで定期的に自動更新がかかるようにしておりますが、 同期を取りたい時にIE上からフルパスでスクリプトを実行し サーバAからサーバBへ同期を取りたいです。 色々と調べているのですが、糸口が掴めない状態です。 どなたかお分かりになられればご教示頂きたいです。 よろしくお願い致します。

  • SSH + rsyncがダメです

    パスワード無しでサーバAの/home,/etcをからサーバBの/tmp/内にrsyncでコピーしたいのですがなかなかうまくできません。今のところrsyncで以下のような記述を実行して動作確認まではできました。 rsync -avz -e ssh /home/ サーバB:/tmp/ 当然ながら実行後パスワードを聞かれてしまいます。 そこでSSHの設定をしなければと思いネットを巡って試したのですが、どうしてもパスワードを聞かれてしまいます。 SSHの設定が分かってないのだと思います。 ずばり!を教えていただけるとうれしいです。 環境Redhat7.3 インストールしたままです。何もいじってません。ご教授お願い致します。

  • rsync実行でmkdirエラー

    rsyncコマンドでs1/s2/s3/a.txtというファイルをd1/s2/s3/にコピーしようとしているのですが ※d1ディレクトリはあるがd1/s2ディレクトリ、d1/s2/s3ディレクトリは存在していない。 $ rsync -avzu --delete s1/s2/s3/a.txt d1/s2/s3/ building file list ... done rsync: mkdir "/home/hogehoge/d1/s2/s3" failed: No such file or directory (2) rsync error: error in file IO (code 11) at main.c(381) rsync: connection unexpectedly closed (8 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(359) エラーが出てしまいます。 $ rsync -avzu --delete s1/a.txt d1/s2/ building file list ... done created directory d1/s2 a.txt sent 124 bytes received 40 bytes 109.33 bytes/sec total size is 6 speedup is 0.04 成功します。 d1/s2/s3の場合でもディレクトリが作成されてコピーできるようにするにはどうしたら良いでしょうか? OSはLinuxです。

  • レンタルサーバ同士のバックアップ

    レンタルサーバ同士で毎日バックアップを取りたいと考えています。このサイトでいろいろと検索した所、rsync + sshで行うようですが、レンタルサーバ同士でも設定は可能なのでしょうか? 両方ともcrontabは使用可能です。 Aサーバの/home/hoge/backup/内をそのままミラーの形で、 Bサーバの/home/hoge/backup/にバックアップしたい。 ※Aサーバの/home/hoge/backup/には現状10個程あるDBのmysqldumpを毎日取り、1ヶ月後に削除する設定にしています。 ※Bサーバでの運用は考えていません。 Aサーバ:hoge1.com Linux 2.6.9-42.ELsmp Bサーバ:hoge2.com Linux 2.4.34.1-p3-nonsmp-JWH Aサーバのcrontabに見よう見まねで下記をセットした所、 rsync -avz -e ssh --delete /home/hoge/backup/ hoge2.com:/home/hoge/backup/ rsync error: syntax or usage error (code 1) at main.c(891) とエラーになりました。 それとも、rsync + sshは諦めて、ftpコマンドで送った方がよろしいのでしょうか?

  • リモートホストに画像だけコピーしたい

    お世話になります、シェルスクリプト初心者です。 当方では、sshの鍵接続でリモートホストに接続し scp若しくはsshで画像だけのコピーをしたいと考えています。 接続するユーザ: user(ssh鍵作成済で、鍵だけでsshに入れるようにした) ローカルホスト:192.168.11.101 画像パス:/home/user/img/(サブディレクトリがたくさんある)/*.jpg|.gif|.png リモートホスト:192.168.11.200 画像パス:/home/user/img/(サブディレクトリがたくさんある)/*.jpg|.gif|.png シェル: ------ #!/bin/sh for FILE in `find /home/user/img/ -regex ".*\.\(jpg\|png\|gif\|JPG\|GIF\|PNG\)"`; # do /usr/bin/scp -P 22 -i "/home/user/.ssh/id_rsa" -r $FILE user@192.168.11.200:$FILE; # do /usr/bin/rsync -av -e "ssh -i /home/user/.ssh/id_rsa" $FILE user@192.168.11.200:$FILE; done ------ ここで問題が起きました。 for文で画像パスであるファイルパスを探し そのファイルパスをscpまたはrsyncでファイルをコピーするんですが、 リモートホストにローカルホストとおなじディレクトリがない場合、 以下のエラーメッセージが返ってきてしまいます。 ------ building file list ... done rsync: push_dir#3 "/home/user/img/(サブディレクトリ)" failed: No such file or directory (2) rsync error: errors selecting input/output files, dirs (code 3) at main.c(545) [receiver=2.6.8] rsync: connection unexpectedly closed (8 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(463) [sender=2.6.8] ------ scpやrsyncで「ディレクトリがない場合、作成」をしたいのですが、 それはscpやrsyncのオプションで叶うものなのでしょうか。 または、他の方法で叶うものなのでしょうか。 ご教授をお願いいたします。

  • rsyncのPermission denied

    CentOS6.3にて rsync -avvz root@172.30.1.21:/mnt/iptables/ /mnt/nas/iptables/ を実行しました。ログとして以下のものが出力されました。 <ログ> opening connection using: ssh -l root 172.30.1.21 rsync --server --sender -vvlogDtprze.iLs . /mnt/iptables/ root@172.30.1.21's password: receiving incremental file list delta-transmission enabled (1)rsync: chgrp "/mnt/nas/iptables/." failed: Permission denied (13) <質問1> (1)の意味がわからないのですが、rsyncは何をしようとしてなぜパーミッションエラーが出ているのでしょうか?  ・root@172.30.1.21:/mnt/iptables/ は、別サーバのNFSをマウントしています。  ・/mnt/nas/iptables/ は、NASドライブをcifstestユーザでマウントしています。  【コマンド:mount -t cifs //NASのIP/cifs/ /mnt/nas/iptables/ -o username=cifsuser,iocharset=utf8,codepage=932】  (NASにrootユーザが作れなかったため)  ・rsync実行時は、rootユーザー。 になります。 <質問2> ただ、パーミッションエラーが出てたのですが、以下ログが出力されており、 データのコピーが完了していました。 total: matches=0 hash_hits=0 false_alarms=0 data=3999447313 sent 546 bytes received 493957830 bytes 1123909.84 bytes/sec total size is 3999426304 speedup is 8.10 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1505) [generator=3.0.6] ためしにコピーされた一つのコピー元ファイル と コピー後のデータをdiffしてみた所 エラーも出ませんでした。サイズも一緒。 これは正しくコピーできていると信じていいのでしょうか? ご教授おねがいします。

  • [bash] rsync データバックアップ

    掲題の件で質問させて下さい。 rsync でローカルサーバ(A)のデータをリモートサーバ(B)にコピーしたいのですが、 そのためのシェルを作成でつまづいております。 ====================================================================== ▼シェルの中身 #!/bin/bash LOG=/var/log/backup.log PARAM=/etc/param/backup.param while read line; do echo `date +%Y/%m/%d" "%H:%M:%S`" "$line" のバックアップを取得します。" >> $LOG expect -c ' spawn rsync -auvz --delete -e "ssh -p 10022" '$line' root@BのIPアドレス:/backup/ expect "password:" send "パスワード\n" interact ' done < /etc/param/backup.param ====================================================================== ====================================================================== ▼実行結果 + LOG=/var/log/backup.log + PARAM=/etc/param/backup.param + read line ++ date '+%Y/%m/%d %H:%M:%S' + echo 2016/09/13 '15:05:25 /home/the-key のバックアップを取得します。' + expect -c ' spawn rsync -auvz --delete -e "ssh -p 10022" /home/the-key root@BのIPアドレス:/backup/ expect "password:" send "パスワード\n" interact ' spawn rsync -auvz --delete -e ssh -p 10022 /home/the-key root@BのIPアドレス:/backup/ root@BのIPアドレス's password: + read line ====================================================================== 実行結果を見ると、パラメータファイルの読み込み自体はうまく言っているのですが、 expect 内での変数の参照(とエスケープ文字)が正しくなく、ssh認証でおかしくなって しまっているようです。 変数の表記をどのように記述すればBへのデータ移行が出来るようになるのでしょうか。

  • [bash] rsync データバックアップ

    掲題の件で質問させて下さい。 rsync でローカルサーバ(A)のデータをリモートサーバ(B)にコピーしたいのですが、 そのためのシェルを作成でつまづいております。 ▼シェルの中身 ---------------------------------------------------------------------- expect -c " spawn rsync -auvze \"ssh -p 10022\" /tmp/ root@BのIPアドレス:/backup/ expect \"root@BのIPアドレス's password:\" send \"パスワード\" exit 0 " ---------------------------------------------------------------------- ▼実行結果(sh -x /シェルのパス) ---------------------------------------------------------------------- + expect -c ' spawn rsync -auvze "ssh -p 10022" /tmp/ root@BのIPアドレス:/backup/ expect "root@BのIPアドレス'\''s password:" send "パスワード" exit 0 ' spawn rsync -auvze ssh -p 10022 /tmp/ root@192.168.23.44:/backup/ root@192.168.23.44's password:[root@TEST01 scripts]# ---------------------------------------------------------------------- 実行結果を見ると、シングルクォーテーションのエスケープが出来ていない?ようです。 実行結果2行目「expect "root@BのIPアドレス'\''s password:"」 何通りか書き方を変えては見たのですが、どれもうまくいかず、、、 どのように書けば ssh ログインをしてサーバBにデータを送れるようになりますでしょうか。 ※パスワード認証はダメだよ!や、パスワード直書きはダメだよ!といったご指摘は  控えて頂けると助かります。とり急ぎ目の前の問題をクリアしたいので。

  • puttyで接続したらserver unexpectedly closed network connectionというエラーがでました。

    Putty でパスワードを入力した直後に server unexpectedly closed network connection というエラーが発生しログインできませんでした。 ちょっと調べてみたら、 /etc/ssh/sshd_config で #UsePAM yes UsePAM no とすれば良いと書いてあったのですが、以下の点がわかりません。 ・/etc/ssh/sshd_config の sshd_configというのはディレクトリでしょうか?むしろ/etc/のなかに/ssh/というディレクトリが存在しないのですがどうすればいいのでしょうか? ・サーバにアクセスできないのにどうやって修正すればいいのでしょうか? 以上どうぞよろしくお願いします。

  • cron で rsync が実行できない

    サーバ2台を使い rsync にて 同期をとっているのですが、 cron を使って自動化しようとしたところ ツマづいてしまいました。 rsync -au -e ssh {from} {to} 手動にて上記実行するとコピー実行できるのですが * * * * * rsync -au -e ssh {from} {to} >> err と crontab を設定したところ コピーが出来ていません。 /var/log/cron をみると1分置きに (root) CMD (rsync -au -e ssh {from} {to} >>err) とあり実行はされているようです err を確認しましたが特にエラー記述もありませんでした。 どういった箇所を調べればよいか助言いただけると助かります。 よろしくお願いします。