CentOS6.5とWindows7でWinSCP3を使ってファイル転送を実現する

前回 CentOS6.5にWindows7から RemoteDeskTopで繋ぐ環境を作りました。
Windows同士では、リモートデスクトップ・KeBORDなどを使えば、デスクトップ操作だけではなく ファイル転送も可能ですが、Linux相手では そう簡単にはできません。VNC系のToolには できそうな表現がちらちら見えるのですが、動作環境がWindows限定だったりでうまくありません。実際 VNCでLinux相手のファイル転送をヤッタヨといった記事は見あたりません。(RealVNCの有償版を使えばできそうです。)
ファイル転送は 文字通り File Transfer → File Transfer Protocol → FTP というわけで、CentOSにFTPサーバーを立ててやれば  ファイル転送自体はできます。しかしWindowsにどっぷり使っていた自分としては いまさらCUIは・・・・・ と思っていたらWinSCP3という ソフトを見つけました。
WinSCP3はMS-Windows上で動く オープンソースでグラフィカルなFTPFTPSSFTPクライアントプログラムです。このプログラムで 使い慣れた PcAnywhereのファイル転送処理と同様のUIが実現できました。

まずFTPサーバーを構築し、最終的には 暗号化を考え SFTPによるファイル転送環境を作りました。

1. FTPサーバー構築

  • vsftpdインストール
    端末から 
      $ su – root
      # yum -y install vsftpd
    サービスを開始します。
     # service vsftpd start
    起動時に自動的に開始するようにします。
     # chkconfig vsftpd on
    設定を確認
     # chkconfig –list vsftpd と入力し 
     vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off と表示されればOK
  • ポートの解放
    デフォルトでは FTPで使うポート21はアクセス禁止になっているので 解放します。
    デスクトップのメニューから、システム → 管理 → ファイアーウォール とたどり
    「ファイアウォールの設定ダイアログ」を表示します。
    FTP(21/tcp)をチェックし 適用ボタンをクリックし ダイアログを閉じます。
    ここで OSを再起動します。

    注意)
     「ファイアウォールの設定ダイアログ」を使った処理は 前回構築した xrdpを使ったリモートデスクトップでは エラーになり実行できません。
    CentOS6.5のデスクトップを直接操作する必要があります。
     

  • 接続テスト
    Windows7のDOS窓から
    ftp
    ftp> op
    宛先 192.168.11.107  ← CentOS機のIP
    USER名とパスワードの入力を求められれば 接続成功!!

    ここで USER名にanonymousと入力し パスワードを省略すると ログインに成功します。
    ところが USER名にCentOSに登録してあるユーザー名を入力すると
    『500 OOPS: cannot change directory:/home/username』とエラーメッセージを表示してログインできません。SELinuxがCentOSに登録してあるローカルユーザーのアクセスを禁止しているためです。

    一旦 SELinux を無効化します。
     $ su
     # getenforce
     Enforcing
     #setenforce 0
     #getenforce
     Permissive
    これによりローカルユーザーのアクセスも可能になりました。

    さらに 再起動してもSELinuxが起動しないように /etc/sysconfig/selinux の SELINUXの設定を以下のように修正します。
    修正前:SELINUX=enforcing
    修正後:SELINUX=disabled

    参考URL:
    CentOSにFTPサーバー(vsftpd)を入れてみた
    FTP サーバー(vsftpd)のインストールと設定 ~ CentOS6
    はじめての自宅サーバ構築

2. WinSCP3インストール

  • WinSCP3インストール
    ここから WinSCP5.5.4 のインストールパッケージ(winscp553setup.exe)をダウンロードします。
    winscp553setup.exeを起動し、インストールを進めます。インストール作業には 特に注意を要する所はありません。規定値のままで問題ありません
  • FTPを使いパスワード認証でサーバーと繋ぐ
    WinSCP3を起動します。
     【ログイン画面で】
      転送プロトコル : FTP
      暗号化 : 暗号化なし
      ホスト名 : 192.168.11.107
      ポート番号 : 21
      ユーザー名 : サーバーに入るユーザー名
      パスワード : ユーザーのパスワード
      「ログイン」ボタンクリック
     【ファイルマネージャウィンドウ】
      ログインに成功すると 下のようなグラフィカルなウィンドウが表示されます。
      

    参考URL:
    WinSCPとは
    WinSCP3の利用について
    WinSCP.Net

3. SSH2の鍵作成
  FTPのままでは 暗号化されていないので セキュリティ面を考えSSHを使うことにします。

  • OpenSSHのインストール
    CentOSをインストールすると自動的にインストールされています。
     
  • OpenSSHの設定
    rootで geditを実行し /etc/ssh/sshd_config を変更します。

    #LoginGraceTime 2m
    変更前 : #PermitRootLogin yes
    変更後 : PermitRootLogin no          ルートでのログイン禁止

    # To disable tunneled clear text passwords, change to no here!
    変更前 : #PasswordAuthentication yes
    変更後 : PasswordAuthentication no  パスワード入力によるログイン禁止 鍵方式のみOK 

    変更前 : #PermitEmptyPasswords no
    変更後 : PermitEmptyPasswords no   空パスワード禁止

  • OpenSSH再起動
    # /etc/rc.d/init.d/sshd restart

  • SSH2での鍵作成

    $ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    エンターキー押下
    Enter file in which to save the key (/home/linux/.ssh/id_rsa):
    Created directory '/home/linux/.ssh'.
    パスフレーズ(SSH2のパスワード)入力
    Enter passphrase (empty for no passphrase):
    パスフレーズの再入力(上記で入力したもの)
    Enter same passphrase again:
    Your identification has been saved in /home/linux/.ssh/id_rsa.
    Your public key has been saved in /home/linux/.ssh/id_rsa.pub.
    The key fingerprint is:
    鍵の作成先の表示
    $ ls -la /home/linux/.ssh/  
    合計 16
    drwx------  2 linux linux 4096  9・27 14:09 .
    drwx------  3 linux linux 4096  9・27 14:09 ..
    -rw-------  1 linux linux  951  9・27 14:09 id_rsa       秘密鍵
    -rw-r--r--  1 linux linux  238  9・27 14:09 id_rsa.pub   公開鍵
    公開鍵をauthorized_keysに追加
    $ cat /home/linux/.ssh/id_rsa.pub >> /home/linux/.ssh/authorized_keys
    公開鍵を自分のみアクセスできるように変更
    $ chmod 600 /home/linux/.ssh/authorized_keys
    公開鍵の削除
    $ rm -f /home/linux/.ssh/id_rsa.pub
    鍵の作成先の表示 
    $ ls -la /home/linux/.ssh/
    合計 16
    drwx------  2 linux linux 4096  9・27 14:10 .
    drwx------  3 linux linux 4096  9・27 14:09 ..
    -rw-------  1 linux linux  238  9・27 14:10 authorized_keys  公開鍵
    -rw-------  1 linux linux  951  9・27 14:09 id_rsa           秘密鍵
    ここで作成した 秘密鍵を USBメモリに保存します。

         注)今回はCenstOS側で鍵を作りましたが 後述するputtyのputtygen.exeを使って Windows側でも作成できるようです。(実験はしていません)

          参考URL: はじめての自宅サーバ構築 

4. WinSCPを使って 鍵認証でサーバーと接続する。

  • WinSCP3のログイン画面で
    転送プロトコル : SFTP
    ホスト名 : 192.168.11.107
    ポート番号 : 22 
    ユーザー名 : サーバーに入るユーザー名
    パスワード : ユーザーのパスワード

    初回に限り「設定」ボタンをクリックし「高度なサイトの設定」ダイアログで 以下の操作を行います。
    左側のSSH-認証をクリックします。
     秘密鍵の参照ボタンをクリックして CentOSで作成した秘密鍵を指定し OKボタン
     と思いきや!!!! Putty形式の秘密鍵ではない!!!と怒られてしまった。
    ご親切にも「puttygenを使うとCentOSで作った鍵が変換できるよ」 とのこと

  • puttygenで公開鍵をPutty形式に変換する
    hdk の自作ソフトの紹介」から putty-0.63-jp20130916.zipをダウンロードし解凍
    puttygen.exe を起動
    Load ボタンをクリックし CentOSで作成した秘密鍵をLoad
    Save private key ボタンをクリックし Putty形式の秘密鍵を拡張子をppkとして 作成
     
  • 秘密鍵をWinSCP3に登録する
    WinSCP3のログイン画面の「高度なサイトの設定」ダイアログに戻り  Putty形式に変換した秘密鍵を指定しOKボタンをクリック
     
  • ログイン
    ログインボタンをクリック
    成功すると パスワード認証と同様に ファイルマネージャのウィンドウが表示されます。

    WinSCP3のファイルマネージャを使って できる主なこと
     ファイル・フォルダのコピー
     ファイル・フォルダの削除 

     当面自分が必要な作業は GUIでできそうです。

5. FTPサーバー停止
    当面FTP手順は使わないことから FTPサーバを終了し、アンインストールします。

    サービスの停止
    # service vsftpd stop
    FTPサービスの自動起動停止
    # chkconfig vsftpd off
    FTPサービスの自動起動確認
    # chkconfig –list vsftpd
    vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off となれば OK
    FTPサーバのアンインストール(サービスを停止し,ポート21を閉じればアンインストールはしなくてもOKです。)

    # yum -y remove vsftpd

    ポート21のアクセスを禁止する
     1.のFTPサーバー構築で行った ポート21の解放と同様の手順で ポート21のアクセスを禁止します。 

スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする