WinSCPを使用してSFTP接続をします

RHEL8やCentOSにSSH接続する環境が整っている方はFTPサーバーを立てなくても、ポート番号22を使用するSFTPを使用してファイル転送をすることができます。SFTPは暗号化された通信路を使って安全にファイルを送受信するプロトコルです。
本日はWinSCPというFTPクライアントと同等の操作ができるソフトを使用してLinuxに接続します。
まずは、管理者権限でSFTP接続する専用のユーザーを作成します。

sudo su -
useradd -m scp

先に入力したユーザー作成のコマンドにより、そのユーザーのホームディレクトリも作成されるので、その階層の下に.sshというディレクトリを作成します。

mkdir /home/scp/.ssh

このディレクトリに公開鍵を転送するのでPuttygen(Putty Key Generator)を使用して作成します。WinSCPがPuttyで作成した鍵を使用するので必要になります。PuTTYgenとは公開鍵、秘密鍵を容易に作成できるツールです。
Generateボタンをクリックして、適当にマウスを動かした後、なにかしら文字列が表示されます。これをすべてコピーしてメモ帳に貼り付けます。

ここではscp2.txtというファイル名で保存しました。これが公開鍵です。さらに、パスフレーズを入力後、Save Private Keyをクリックして保存します。拡張子は.ppkとします。これが秘密鍵です。

次はSSH接続をしているTera Termに戻り、ファイル→SSH SCPと進みます。上段のFromの部分に先ほど作成した公開鍵を指定して転送します。

転送先は何も入力しないと、SSH接続をしたユーザーのホームディレクトリが転送先となるようです。よって次のコマンドを入力して.sshに、authorized_keysというファイルを作成します。scp2.txtはその後は不要なので削除します。

cat /home/opc/scp2.txt >> /home/scp/.ssh/authorized_keys
rm /home/opc/scp2.txt

このファイルやディレクトリに適切なパーミッションや権限を付与しないとエラーになるので、コマンド入力して設定します。chmodでパーミッション設定を、chownでSFTP接続をするユーザーに権限を付与します。

chmod 700 /home/scp/.ssh/
chown -R scp. /home/scp/.ssh/
chmod 600 /home/scp/.ssh/authorized_keys

ここまででサーバー側の設定は完了しました。続いて、WinSCPを起動して設定をおこないます。新しいサイトでホスト名、ユーザー名、パスワードを入力します。パスワードはPuttygenのパスフレーズではなくLinuxで作成したユーザーのパスワードです。先ほどパスワードを設定していませんので空白のままにします。

秘密鍵による認証をするので無視されると思われます。また、設定ボタンをクリックし、SSH項目にある認証において、Puttygenで作成した秘密鍵を読み込んでおきます。

タイトルとURLをコピーしました