Mac・Linuxでのファイル転送

  1. OpenSSHがインストールされていること.なお,最近のディストリビューションでは標準でインストールされている場合がほとんどです.
  2. 鍵ペアの作成と公開鍵の登録 の手順で鍵ペアを作成し, 利用者ポータル から公開鍵を登録していること.

scp コマンドおよび sftp コマンドを利用して接続する手順を紹介します.利用する際は,システムに応じたホスト名を指定してください.

システム ホスト名 備考
A camphor.kudpc.kyoto-u.ac.jp 2台のログインノードで負荷分散しています.システムAを利用の方のみログインできます.
B laurel.kudpc.kyoto-u.ac.jp 3台のログインノードで負荷分散しています.
B(SAS利用時) sas.kudpc.kyoto-u.ac.jp
C (Cinnamon 2) cinnamon.kudpc.kyoto-u.ac.jp Laurel 2のログインノードに,Cinnamon 2の環境をロードした状態で接続します.
ファイル転送サーバ hpcfs.kudpc.kyoto-u.ac.jp 2台のサーバで負荷分散しています.時間制限のないSFTP, RSYNC専用のサーバです.

scp コマンドは, cp コマンドと同じような構文で,コマンドの引数にコピー元とコピー先を指定します. cp コマンドとの大きな違いは,コピー元やコピー先にリモートマシンのファイルシステムを指定することができるところです.なお,リモートマシンのファイルを操作するためには,認証が必要になります.

リモートマシンのファイルを表現するためには,まず,リモートマシンのホスト名を明記し,(:)コロンを付け,その後ろにファイル名を指定します.例えば,システムBのホームディレクトリ上のファイル(test.txt)は以下のように表現できます。

laurel.kudpc.kyoto-u.ac.jp:test.txt

ローカルマシンとリモートマシンのユーザ名が異なる場合,ホスト名の前にユーザ名を指定します.ユーザ名とホスト名は(@)アットマークで連結してください.例えばユーザ名がb59999の場合,以下のようになります.

b59999@laurel.kudpc.kyoto-u.ac.jp:test.txt

scpコマンドの使い方

scp [オプション] [[ユーザ名@]ホスト1:] ファイル1 [[ユーザ名@]ホスト2:] ファイル2

scpコマンドのオプション

オプション 説明
-r コピー元がディレクトリだった場合,そのディレクトリ以下のツリー構造を含めてコピーします
-p コピー元ファイルの最終修正時刻や最終アクセス時刻およびパーミッションを保つようにします
-C 通信を圧縮します
-i FILENAME 接続に使用する秘密鍵を指定します

scpコマンドの実行例

リモートマシンはシステムB,利用者番号はb59999とします

  • file1.txtをリモートマシンにセキュアコピーする

    $ scp file1.txt b59999@laurel.kudpc.kyoto-u.ac.jp:  
    Enter passphrase for key '/home/test/.ssh/id_rsa':  ←パスフレーズを入力
  • リモートマシンのfile1.txtをfile2.txtとしてセキュアコピーする

    $ scp b59999@laurel.kudpc.kyoto-u.ac.jp:file1.txt file2.txt  
    Enter passphrase for key '/home/test/.ssh/id_rsa':  ←パスフレーズを入力
  • ディレクトリ(dir1)をリモートマシンにセキュアコピーする

    $ scp -r dir1 b59999@laurel.kudpc.kyoto-u.ac.jp:  
    Enter passphrase for key '/home/test/.ssh/id_rsa':  ←パスフレーズを入力
  • 秘密鍵を指定した上で,file1.txtをリモートマシンにセキュアコピーする

    $ scp -i ~/.ssh/id_rsa_kyoto file1.txt b59999@laurel.kudpc.kyoto-u.ac.jp:  
    Enter passphrase for key '/home/test/.ssh/id_rsa_kyoto':  ←パスフレーズを入力
  • マニュアルを閲覧する

    $ man scp

sftp コマンドは, ftp と似た対話的なファイル転送プログラムです.指定されたリモートマシンに接続してログインした後,対話的なコマンドモードに入ります.

対話的なコマンドモードで利用できるコマンドも ftp と似ていますが,ディレクトリを再帰的に扱うmgetやmputはサポートされていませんので,複数ファイルの転送には sftp より scp のほうが使いやすいかもしれません.

sftpコマンドの使い方

sftp [オプション] [[ユーザ名@]ホスト[:ファイル [ファイル]]]

sftpコマンドのオプション

オプション 説明
-C 通信を圧縮します
-oIdentityFile=FILENAME 接続に使用する秘密鍵を指定します

sftpコマンドの実行例

リモートマシンはシステムB、ユーザ名はb59999とします.

  • リモートマシンにセキュアFTPでログインしファイル転送を行う

    $ sftp b59999@laurel.kudpc.kyoto-u.ac.jp
    Connecting to laurel.kudpc.kyoto-u.ac.jp...
    Enter passphrase for key '/home/test/.ssh/id_rsa':  ←パスフレーズを入力
    sftp> get file1.txt ←リモートマシンのfile1.txtをgetする
    Fetching /home/a/b59999/file1.txt to file1.txt
    /home/a/b59999/file1.txt                            100% 5615     5.5KB/s   00:00 
    sftp> put file2.txt ←ローカルマシンのfile2.txtをputする
    Uploading index.html to /usr/home/test/file2.txt
    file2.txt                                           100% 5615     5.5KB/s   00:00 
    sftp> quit ←セッションを終了する
    $
  • 秘密鍵を指定してログインする

    $ sftp  -oIdentityFile=~/.ssh/id_rsa_kyoto   b59999@laurel.kudpc.kyoto-u.ac.jp
  • マニュアルを閲覧する

    
    $ man sftp


Copyright © Academic Center for Computing and Media Studies, Kyoto University, All Rights Reserved.