前回 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上で動く オープンソースでグラフィカルなFTP、FTPS、SFTPクライアントプログラムです。このプログラムで 使い慣れた 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のアクセスを禁止します。