WindowsでSCPしよう!

私は大学ではLinuxですが自宅ではWindowsユーザーなので、 常々WindowsでSCPをしたいと思っていました。 そして、ついにその日がやってきました。 Simon Tathamさん ありがとうございます!(日本語わからないだろうけど…)

という訳で、私と同じくWindowsでSCPしたい人のためにちょっと書いてみます。


WinSCPでいいじゃん、GUIだし」という声が聞こえてきそうですが、 現段階ではWinSCPだと port foward がうまくいかない気がします。 なので、表にでてるマシンが限られている場合がある 大学や研究機関などの端末では比較的需要は多いんじゃないかな〜、と。

このページ自体は「MS-DOSプロンプト使えないんですけど…」 という人向けですので、中級者以上の方は読む必要はないと思われます。 使い方自体は普通の(Linuxあたりの)SCPと同じですので、パス通して使ってください。


    Step 1

    まず最初に、 PuTTYのページ からputty.zip(一式セット)、もしくはpscp.exeをダウンロードして、
    適当な適当なディレクトリ(フォルダ)に置いてください。
    (前者の場合はダウンロードしたファイルが圧縮されているので、 解凍しておいてください。)

    ここでは、C:\putty に解凍したということにします。


    Step 2

    PSCPはMS-DOSプロンプト用のソフトなので、MS-DOSプロンプトに関する設定をする必要があります。

    • Windows9X系な方

      Cドライブを開くとAutoexec.batというファイルがあると思いますが、 これをメモ帳などで開いて下さい。
      たぶん、

      loadhigh C:\WINDOWS\COMMAND\nlsfunc.exe C:\WINDOWS\country.sys

      などと書いてあると思います。(違っていても気にしなくて結構です)
      そこにおもむろに

      set PATH="%PATH%";C:\putty
      doskey

      などと追加します。(上の部分をコピーして最後に貼ってもらっても結構です。)
      doskeyは無くてもいいんですけど、実用上はあった方が嬉しいと思います。
      その後、いったん再起動してください。

      もし既に
      set PATH="%PATH%";なんとかかんとか〜
      という文章が 書いてある場合は、その後ろに
      ;C:\putty
      を追加してください。
      ";"を前に入れるのを忘れずに。

    • WindowsXP/NT系な方

      Windows NT/2000/XP では,
      コントロールパネル → システム → 詳細 → 環境変数
      とたどり, ユーザ環境変数のところを見てください。
      PATH という欄があればそれをクリックして[編集]を押し, 変数値の最後に
      ;C:\putty
      を追加して[OK]を押します。 (";"を前に入れるのを忘れずに。)
      PATH がなければ[新規]を押して、変数名に
      PATH
      変数値に
      "%PATH%";C:\putty
      と入れ、[OK]を押します。
      (例によってコピーして貼ってもらって結構です。)


    Step 3

    実は、これでもうSCPできちゃいます。使い方は基本的にSCPと一緒で、 MS-DOSプロンプトを起動して

    pscp [-P port] ファイル名 ユーザー名@ホスト名:[ファイルをおく場所]

    などとすると、手元のファイルを別の端末に送ることができます。また、

    pscp [-P port] ユーザー名@ホスト名:[ファイルのある場所]ファイル名 ファイルをおく場所

    などとすると、手元に別の端末からファイルを送ることができます。 やったぜっ!
    (名前がscpじゃなきゃイヤな人は、プログラムをscpにリネームして使ってください。)

    引数なしで実行する(プロンプトで "pscp" とだけ入力してEnter)とUsageが出ますので、真面目な使い方はそちらを見てください。

    コメント

    • ポート指定の際は、-P とポート番号の間に スペースを空けないとうまくいきません。(今はなおってるかも…)
      WinSCPもSCPの部分はPSCPを使っている(らしい)ので、 この辺がWinSCP2で port foward がうまく行かない理由のような気がします。
    • より浅いディレクトリに対してシンボリックリンクを張ってあるディレク トリを再帰的にコピーすると、(シンボリックリンクを辿ってしまい) 無限ループに陥るようです。困ったバグです…。


お疲れ様でした