🚀

WinSCP入門:ファイル転送から公開鍵認証まで

に公開7

はじめに

WindowsユーザーがLinuxサーバーなどにファイルを転送したい場合、WinSCPは非常に強力なツールです。この記事では、WinSCPの基本的な使い方から、より安全な公開鍵認証の設定方法まで、初心者にも分かりやすく解説します。

1. WinSCPとは?

WinSCPは、Windows向けのオープンソースなSFTP/FTPクライアントです。主な機能は以下の通りです。

  • 安全なファイル転送: SFTP、SCP、FTPSなど、暗号化されたプロトコルをサポート。
  • 直感的なGUI: ドラッグ&ドロップで簡単にファイルを操作可能。
  • ディレクトリ同期: ローカルとリモートのディレクトリを同期する機能。
  • スクリプト機能: 定型的なファイル転送を自動化。
  • 公開鍵認証: パスワードを使わない、より安全な認証方式に対応。

2. インストール

  1. 公式サイトへアクセス: WinSCP公式サイトにアクセスします。
  2. ダウンロード: 「Installation package」をクリックしてインストーラーをダウンロードします。
  3. インストール: ダウンロードしたインストーラーを実行し、指示に従ってインストールを進めます。「標準的なインストール」を選択すれば問題ありません。

3. 基本的な使い方

サーバーへの接続

  1. WinSCPを起動すると、ログイン画面が表示されます。
  2. 以下の情報を入力します。
    • ファイルプロトコル: SFTP を選択します(推奨)。
    • ホスト名: 接続したいサーバーのIPアドレスまたはホスト名。
    • ポート番号: 22(SFTPのデフォルト)。
    • ユーザー名: サーバーのログインユーザー名。
    • パスワード: ユーザーのパスワード。
  3. 「保存」をクリックして、この接続設定を保存しておくと、次回から簡単に接続できます。
  4. 「ログイン」をクリックしてサーバーに接続します。初回接続時には、サーバーのホストキーをキャッシュに保存するか尋ねられるので、「はい」を選択します。

画面の見方と基本操作

接続が成功すると、左右に2つのペインが表示されます。

  • 左ペイン: ローカルPCのファイルシステム
  • 右ペイン: リモートサーバーのファイルシステム

ファイルのアップロード・ダウンロードは、ドラッグ&ドロップで直感的に行えます。

  • アップロード: 左ペインから右ペインへファイルをドラッグ&ドロップ。
  • ダウンロード: 右ペインから左ペインへファイルをドラッグ&ドロップ。

4. 便利な機能:ディレクトリ同期

ローカルとリモートで特定のディレクトリの内容を同じ状態に保ちたい場合、同期機能が便利です。

  1. メニューバーの「コマンド」>「同期」を選択します。
  2. 同期の方向(ローカル→リモート、リモート→ローカル、両方)や同期モード(同期、ミラー)を選択し、「OK」をクリックします。

5. セキュリティ向上:公開鍵認証の設定

パスワード認証の代わりに、より安全な公開鍵認証を設定しましょう。

Step 1: キーペアの生成

  1. WinSCPのログイン画面で「ツール」>「PuTTYgenを実行」をクリックします。
  2. PuTTY Key Generatorが起動したら、「生成」ボタンをクリックし、マウスをウィンドウ上で動かして乱数を生成します。
  3. キーが生成されたら、以下の操作を行います。
    • キーのコメント: 識別しやすい名前(例: my-pc-key)を入力します。
    • キーのパスフレーズ: (任意)キーをさらに保護するためのパスワードです。設定を推奨します。
    • 公開鍵の保存: 「公開鍵の保存」ボタンをクリックし、id_rsa.pubなどの名前で保存します。
    • 秘密鍵の保存: 「秘密鍵の保存」ボタンをクリックし、.ppk形式で保存します。このファイルは絶対に他人に渡さないでください。

Step 2: サーバーに公開鍵を登録

  1. 先ほど保存した公開鍵(id_rsa.pub)の中身をテキストエディタで開いてコピーします。
  2. WinSCPでサーバーに(この時点ではパスワード認証で)ログインします。
  3. サーバーのホームディレクトリにある .ssh ディレクトリに移動します。(なければ作成してください)
  4. .ssh ディレクトリの中にある authorized_keys というファイルを開き、コピーした公開鍵を追記して保存します。

Step 3: WinSCPで公開鍵認証接続

  1. WinSCPのログイン画面に戻り、設定したいセッションを選択します。
  2. 「編集」をクリックし、「高度なサイト設定」を開きます。
  3. 「SSH」>「認証」を選択します。
  4. 「秘密鍵ファイル」の欄で、先ほど保存した秘密鍵(.ppkファイル)を選択します。
  5. 「OK」をクリックして設定を保存します。
  6. 再度ログインを試みてください。パスワードの代わりに、秘密鍵のパスフレーズ(設定した場合)が求められれば成功です。

まとめ

WinSCPは、Windowsユーザーにとって必須とも言えるファイル転送ツールです。基本的な使い方に慣れたら、ぜひディレクトリ同期や公開鍵認証などの便利な機能も活用して、安全で効率的なファイル管理を実現してください。

GitHubで編集を提案

Discussion

angel_p_57angel_p_57
  • 公開鍵の保存: 「公開鍵の保存」ボタンをクリックし、id_rsa.pubなどの名前で保存します。
    (略)
  1. 先ほど保存した公開鍵(id_rsa.pub)の中身をテキストエディタで開いてコピーします。

この手順、実際に試してますか?
記事「SSHの公開鍵ってなに?」の「認証鍵作成ツール」の章の「PuTTYgen/MobaKeyGen」の項にある、

※OpenSSH形式の公開鍵データはコピペ用のテキストが表示されます。これを見落とす人も多いようです。

と照らし合わせてみてください。

zuzu

鍵生成する際にコピペ用のテキストが表示される事は理解していると思いますが絶対それを使う必要はないと思いますよ?
記事に書いてる動作で間違ってるわけではないですし
今回 WinSCPを使ったので PuTTY が使われてますがterratermなどのSSHクライアントに慣れてたらこの記事に書いてる動作にならざるを得ないですし柔軟で潰しの効く方法を記事に書いてるんだと思います。
自分の方法を認めさせたいのは人間の心理なので分かりますが この手順、実際に試してますか? と疑うのはさすがに老害が過ぎます

angel_p_57angel_p_57

絶対それを使う必要はないと思いますよ?

それを判断するために必要な話なので「実際に試してますか?」と指摘したんですが、では試さずにウソ情報を流したということで良いですね。
情報を検証もせずに ( そりゃ完璧にせよとまでは言いませんが )、実際にやるとトラブる手順が発信されるのを止められないのであれば、そんな記事無い方がマシでしょうね。

例えばRSAで試しに鍵を作って
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIEHl…(略)
という1行の公開鍵情報が出ている状況で

"Save public key"ボタンで保存したファイルの内容が

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20250629"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDIEHlFFbhaKmKszg3RfIhKYKQ6HidkjWnP
erudgNZsIwkJUfIuQEGo6JOKPkThyfB7CqKr+x5e97NWx52Hr5T8i79jzxGscXj2
…(略)

こんな感じになっているんですが。これを代わりにコピペして使っても大丈夫だと認識しているということですね。
人を「老害」認定する前に、もっとやるべき基本があるんじゃないですかね。

zuzu

実際かましてるムーブが老害のそれなので💦
あなたの中でコピペ=「内容を確認せずマルコピする」という事がよく分かりました
ダウンロードした公開鍵はSSH2形式なので公開鍵を保存する対象をより明確にしないと有用性は分からないのに

そんな記事無い方がマシでしょうね。

と著者を攻撃する行動はハッキリ言ってエンジニアとしても人としても未熟だと思いました。(そもそもエンジニアじゃない可能性が高いですが)

私が言いたい事は

先ほど保存した公開鍵(id_rsa.pub)の中身をテキストエディタで開いてコピーします。

この動作自体、公開鍵の内容を確認してますし他のSSHクライアントで柔軟で潰しの効く方法だと思います。しいて言うならあなたみたいに脳死でマルコピしなければ間違ってない方法だと思います。

かなしかなし

@zu さんありがとうございます。
https://qiita.com/sugar_345/items/55cb79d427b9ec21bac2
公開鍵についてはこちらの記事を参考に自分用のメモのために記事を書きました。

公開鍵の内容を確認したらSSH2形式でopenssh形式に変換が必要なのは当たり前ですがそれをそのまま使うと誤解する人もいるみたいなので以下のコマンドで変換するように追記します。

ssh-keygen -i -f id_rsa.pub > new_id_rsa.pub
angel_p_57angel_p_57

公開鍵を保存する対象をより明確にしないと有用性は分からない

取り敢えず、意味不明なこと言って「何か言った気になる」の、有害だからやめてもらいますか。

ちなみに、普通に慣れた人には、authorized_keys に登録するつもりで PuTTY の公開鍵保存ボタンでファイル保存して使い物にならないってのは、あるあるなトラブルの事例です。
※もちろん、バージョンにつれて挙動が変わってくることもあるので、ちゃんと確認する必要はあって、なのでわざわざスナップショット等を載せているわけです。
分かってる人がそういうズレたことを言うことはまあ、ないんですよね。

なお、コメントされた方が著者と違うことは気付いてなかったので、コメントが著者の方向けになってしまいました。申し訳ありません。が、同調するようならそれだけダメ記事になるよ、という話なのでご注意ください。

zuzu

@angel_p_57
用途によって形式が変わるという当たり前の話をしてるのですがご理解いただけませんか?(多分SSH2形式が使われるケースを知らないのかな?)
あとダウンロードした公開鍵を変換するのは理に適ってますのであなたにダメ記事とか言われる筋合いはないと思います。そもそも自分用のメモって仰ってますし(あなた程度の評価は気にしてないと思いますがw)
あと著者さんと第三者の区別がつかないのはシンプルに迷惑なのでインターネットの使い方から改めた方がいいですね
ここで話してると著者さんにも迷惑なのとあなたの理解力だと公開鍵認証を教えてあげても時間の無駄なのでここまでにします

@かなし
お目汚しすみません。若くしてアウトプットに取り組む姿勢は素晴らしいです!
変な人に絡まれる事もあるかもしれませんが気にせず頑張ってください!