ホーム » ブログ » 2008年02月 » scpが出来なくて超ハマったメモ(原因は.bashrc)

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

posted 2008-02-27 written by akiyan | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

とある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を調べてみるといいかもしれません...。

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

  1. katoken より:

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

    exec $HOME/local/bin/zsh

  2. あきやん より:

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

  3. katoken より:

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

  4. あきやん より:

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

    参考になりました!

コメントをどうぞ