WinSCPでSSH秘密鍵を使って公開鍵認証でSFTP接続する方法

WinSCPはFTP・SFTP・FTPS接続できるFTPクライアントソフトですが、SSH接続にも対応しています。
サーバ側で用意したSSH公開鍵さえあれば接続できるので、そのやり方を解説していきます。
事前にSSHキーを用意しておくこと
SSH秘密鍵を使ったSFTP接続では、事前に接続先サーバーのSSH公開鍵が必要です。ですので、サーバー側でSSH公開鍵を発行しておき、SSHキーファイルをダウンロードしていつでも使える状態にしておきましょう。
SSH秘密鍵の作成方法は、使用しているWebサーバーソフトウェアやレンタルサーバーによって異なるので、それぞれマニュアルを見ながらSSH公開鍵を発行しましょう
SSH接続のやり方
それでは実際にSSH秘密鍵でSFTP接続する方法を見ていきましょう。
SSH公開鍵を使ってSSH秘密鍵を作成
ちなみに、今回はConoHa WINGというレンタルサーバーでSSH接続を解説しています。ポート番号など異なることがありますので、適宜説明に加えて行きます。

まずはWinSCPを開き、ログイン画面を表示しましょう。
次に、通常であればこのままホスト名はユーザー名を入力していきますが、先にSSH秘密鍵を生成します。
![接続先リストの下にある[ツール]->[PuTTYgenを実行]をクリック](http://s3.ap-northeast-1.amazonaws.com/static.aprico-media.com/production/imgs/images/000/047/004/original.png?1579762436)
接続先リストの下にある[ツール]->[PuTTYgenを実行]をクリックしましょう。
次に[Load]をクリックし、サーバで発行したSSH公開鍵ファイルを開きます。
![[All Files]](http://s3.ap-northeast-1.amazonaws.com/static.aprico-media.com/production/imgs/images/000/047/005/original.png?1579762438)
デフォルトだと拡張子ppkのファイルしか表示されず、OpenSSH形式(pemファイル)が表示されません。
サーバーで作成した公開鍵ファイルの拡張子がpemだった場合は[All Files]に切り替えて探すと良いでしょう。
間違えて[Generate]を押してしまった場合はPuTTYgenを閉じて再度開くようにしましょう。キーペアの作成はかなり時間がかかるのでPuTTYgenを開き直したほうが早いです。

「Successfully」と表示されなら成功です。
![[Save Private key]をクリックし、PuTTYフォーマットのSSH秘密鍵ファイルを保存](http://s3.ap-northeast-1.amazonaws.com/static.aprico-media.com/production/imgs/images/000/047/007/original.png?1579762442)
ポップアップメッセージを閉じて、[Save Private key]をクリックし、PuTTYフォーマットのSSH秘密鍵ファイルを保存しましょう。このファイルは絶対に無くさないようにしてください。

キーフレーズが必要ないサーバーの場合「Are you sure you want to...」というキーフレーズを設定していませんが問題ありませんか?と確認メッセージが表示されます。
パスフレーズが必要ないのであれば無視してSSH秘密鍵ファイルを保存してください。必要かどうかはレンタルサーバーの公式マニュアルなどに記載されています。
SSH秘密鍵を使ってSFTP接続
先程の作業で接続用のSSH秘密鍵が完成しました。あとは簡単です。

接続先のホスト名・ポート番号・ユーザー名・パスワード(必要な場合のみ)を通常のFTP接続と同じように入力していきます。
「転送プロトコル」は[SFTP]のまま変更しないでください。

それぞれ入力が完了したら念のため保存してリストに加えておきましょう。まだ接続できませんが、接続ミスによる入力し直しを減らせます。
![[設定]->[設定]をクリック](http://s3.ap-northeast-1.amazonaws.com/static.aprico-media.com/production/imgs/images/000/047/011/original.png?1579762450)
保存したら再編集し、[設定]->[設定]をクリックします。
![左メニューの[SSH]->[認証]を開く](http://s3.ap-northeast-1.amazonaws.com/static.aprico-media.com/production/imgs/images/000/047/012/original.png?1579762452)
SSHの設定を行うので、左メニューの[SSH]->[認証]を開きましょう。
![「認証条件」の[秘密鍵]に先ほど作成して保存したSSH秘密鍵ファイルを指定](http://s3.ap-northeast-1.amazonaws.com/static.aprico-media.com/production/imgs/images/000/047/013/original.png?1579762453)
「認証条件」の[秘密鍵]に先ほど作成して保存したSSH秘密鍵ファイルを指定します。
指定したら画面したの[OK]を押して設定を完了してください。
![[保存]](http://s3.ap-northeast-1.amazonaws.com/static.aprico-media.com/production/imgs/images/000/047/014/original.png?1579762455)
最後に[保存]を押すのを忘れないようにしてください。[保存]を押すまでは秘密鍵の設定も反映されません。
保存が完了したら作成した接続設定を利用してログインしてみましょう。

ホスト名やポート番号・作成した秘密鍵などが間違っていなければSFTP接続に成功してファイルやフォルダが表示されるしょう。
通常のFTP接続と比べると接続の初期設定が少し大変ですが、セキュリティは高めですのでSSHキーを使う場合はこの方法参考に試してみてください。
SSH秘密鍵を使ってSFTP接続する際の注意点

SSH秘密鍵を使ってSFTP接続するのはセキュリティー面で優れていますがいくつか注意しなければならないことがあります。
最後に注意点の方も見ていきましょう。
必ずSSH接続要件を確認しておく
レンタルサーバーを利用する場合、SSH接続に必要な情報が異なります。
- ホスト名
- ポート番号
- パスワードの有無
- SSH秘密鍵でのキーフレーズの有無
例えばConoHa WINGというレンタルサーバーだと、パスワードとキーフレーズを使わない接続となっています。
ホスト名やポート番号など何か一つの間違っていると、正しくSSH公開鍵・秘密鍵の設定をしたとしてもログインできないので気をつけましょう。
SSH秘密鍵は絶対流出させないように

何があってもssh秘密鍵を流出させてはいけません。ssh秘密鍵があればWebサーバーに不正アクセスできるため非常に危険な状態になります。
もし、sshキーを紛失した・誰かにコピー複製された可能性があるという場合は既存のsshキーを削除して無効化し、あらたにsshキーを発行するようにしましょう。
そうすることで不正アクセスによる被害を抑えることができます。