scpが出来なくて超ハマったメモ(原因は.bashrc)

とあるFreeBSDのサーバーからファイルをscpでダウンロードしようとして、出来なくてハマったメモです。

状態は以下の通り。

  • サーバーは FreeBSD 4.10
  • クライアントは CentOS4 と FreeBSD 6.1-Release
  • sshは繋がる
  • WindowsからWinSCPでのダウンロードもOK
  • scpでダウンロードしようとするとできない(固まる)
  • sshでリモートコマンドが通らない(固まる)

scp を v オプション付きでログを出力しながら実行してみると、以下の時点で固まっていました。

debug1: Sending command: scp -v -f ~/filename.ext

原因は、.bashrcで別のシェル(zsh)を立ち上げていたことでした。

↓.bashrcの中身

$HOME/local/bin/zsh

この行をコメントアウトしたところ、解決しました。

なぜこんなことをしていたかというと、接続先のサーバーにはzshがインストールされておらず、権限も無かったのでホームディレクトリ($HOME/local/bin/zsh)にzshをインストールしていました。chshでホームディレクトリにインストールしたシェルを指定することは出来ないので、.bashrcで自動で起動するようにしていたのです。

sshも繋がるしWinSCPも出来たのでなかなか原因にたどり着くことができませんでした。同じような状況のときは.~rcを調べてみるといいかもしれません...。

コメント / トラックバック

コメント / トラックバック 5 件

  1. katoken より:

    試してませんが、以下のようにしたらどうでしょうか?

    exec $HOME/local/bin/zsh

  2. あきやん より:

    > katokenさん
    提案ありがとうございます。
    試してみましたが残念ながら...同じように固まりました。

  3. katoken より:

    うまい解決法じゃないかもしれませんが、.bashrc の内容を以下にすることで scp できるようになりました。あまり試していないので他に影響があるかもしれませんが。。。
    --- .bashrc ---
    if [ $PS1 ]; then
    /bin/zsh
    fi
    --- end ---

  4. あきやん より:

    > katokenさん
    できました!
    なるほど、対話的モードのときだけセットされる環境変数を利用して...ですかね。

    参考になりました!

  5. [...] ち上げるようにしてたらscpができなくなった」というのがあった。(scpが出来なくて超ハマったメモ(原因は.bashrc)) 助かりました。ありがとうございます。 カテゴリー: shellscript &nb [...]