【解決】 SFTP: Connection refused の解決方法と原因 | SFTP/SSH トラブルシューティング

SFTP接続時に「Connection refused」というエラーに遭遇すると、焦ってしまうかもしれませんね。ご安心ください、これは比較的よくある問題で、多くの場合、迅速に解決できます。この記事では、Windowsユーザーの皆様が直面している「SFTP: Connection refused」エラーについて、その概要から最速の解決策、そして再発防止策まで、シニアエンジニアのアシスタントとして分かりやすく解説します。

1. SFTP: Connection refused とは?(概要と緊急度)

「SFTP: Connection refused」エラーは、SFTPクライアント(WinSCPやFileZillaなど)がSFTPサーバーへの接続を試みたものの、サーバー側からその接続が明示的に拒否されたことを示します。これは多くの場合、サーバーが接続を受け付ける準備ができていないか、接続を許可しない設定になっているためです。

このエラーは、ネットワークの基本的な接続に問題があることを意味し、SFTPを利用したファイルの送受信ができません。ビジネスへの影響度によっては緊急度が高いですが、原因は明確なことが多く、適切な手順を踏めば解決可能ですので、冷静に対処していきましょう。

2. 【最速】今すぐ試すべき解決策

「SFTP: Connection refused」エラーの最も一般的な原因は、SFTPサーバー側のファイアウォールが、SSH(SFTP)接続に必要なポートをブロックしていることです。特に、標準のSSHポートである22番(またはカスタムポート)が閉じられているケースが非常に多いです。

ここでは、あなたがアクセスしようとしているSFTPサーバー側(多くの場合Linuxサーバーなど)でSSHサービスが稼働しており、ネットワーク疎通があることを前提として、クライアント側(あなたのWindows PC)で何か確認できる点があるかを考えます。しかし、ほとんどの場合、問題はサーバー側にあります。そのため、SFTPサーバーの管理者に以下の内容を共有し、確認してもらうのが最速です。

解決策1:SFTPサーバー側のファイアウォール設定を確認・開放する

SFTP接続では、基盤となるSSHプロトコルが使用するポート(デフォルトは22番)が、サーバー側のファイアウォールでブロックされていないことを確認する必要があります。サーバー管理者に以下の点を確認してもらいましょう。

  • SFTPサーバー(Linuxなど)のファイアウォール(例: firewalld, ufw, iptables)で、SSHポート(通常22番、またはSFTPサーバーが利用しているカスタムポート)が許可されているか。
  • クラウド環境であれば、セキュリティグループ(AWS Security Group, Azure Network Security Groupなど)で、あなたのクライアントPCのIPアドレスまたは必要なネットワーク範囲からのインバウンド接続が許可されているか。

もしあなたがSFTPサーバーの管理者であり、Windows Server上でSSHサービスを稼働させている場合(一般的ではありませんが)、以下のPowerShellコマンドでSSHポートを開放できます。

# 現在のWindows Defender Firewallルールを確認(オプション)
Get-NetFirewallRule -DisplayName "SSH*"

# SSHポート22を許可するファイアウォールルールを追加
# (ルール名が既に存在する場合はエラーになるため、事前に確認または削除を検討)
New-NetFirewallRule -DisplayName "Allow SSH Inbound (Port 22)" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 22 -Description "Allow inbound SSH connections on TCP port 22."

# カスタムポートを使用している場合(例: 2222番ポート)
# New-NetFirewallRule -DisplayName "Allow SFTP Inbound (Port 2222)" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 2222 -Description "Allow inbound SFTP connections on TCP port 2222."

# ルールが正しく追加されたか再度確認
Get-NetFirewallRule -DisplayName "Allow SSH Inbound (Port 22)" | Format-Table -AutoSize
    

注意: ファイアウォールの一時的な無効化はセキュリティリスクを伴うため推奨されませんが、トラブルシューティングのために一時的にファイアウォールを無効にして接続を試すことも可能です。接続できた場合は、ファイアウォールが原因であることが確定します。その後、必要なポートのみを開放するように設定し直してください。

# Windows Defender Firewallを一時的に無効化(非推奨、テスト用途のみ)
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

# ...接続テスト後、必ず有効に戻す...

# Windows Defender Firewallを有効化
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
    

3. SFTP: Connection refused が発生する主要な原因(複数)

ファイアウォール設定が正しいにもかかわらず「Connection refused」エラーが解消しない場合、以下のような原因が考えられます。

  1. SSHサービスが実行されていない(サーバー側): SFTPサーバー上でSSHデーモン(sshd)サービスが停止している可能性があります。サービスを再起動または開始する必要があります。
  2. 不正なポート指定: SFTPクライアントで指定しているポート番号が、SFTPサーバーがリッスンしているポート番号と異なっている。特にカスタムポートを使用している場合に発生しやすいです。
  3. IPアドレスの制限(サーバー側): SFTPサーバーが特定のIPアドレスからの接続のみを許可するよう設定されている(例: /etc/hosts.allowsshd_configAllowUsers/AllowGroups 設定、クラウドのセキュリティグループ設定など)が、あなたのIPアドレスが含まれていない。
  4. サーバーがダウンしている/ネットワークの問題: SFTPサーバー自体が稼働していない、またはクライアントとサーバー間のネットワーク経路に問題がある(DNS解決失敗、ルーティングの問題など)。ping コマンドでサーバーに到達可能か確認してみましょう。
  5. SFTPサーバーの過負荷: サーバーが一時的に接続を受け付けられないほど高負荷になっている可能性があります。
  6. SSH設定ファイルの問題(サーバー側): sshd_config などの設定ファイルに構文エラーがある、または許可されていない設定が記述されている。

これらの原因は、SFTPサーバーのログを確認したり、サーバー管理者に問い合わせることで特定できることが多いです。

4. SFTP/SSHで恒久的に再発を防ぐには

一度解決しても再発する可能性を低減するためには、以下の対策を検討しましょう。

  • サーバー側でのSSHサービス自動起動設定の確認: SSHデーモン(sshd)がサーバー起動時に自動的に起動するように設定されていることを確認します。
  • ファイアウォールルールの永続化: ファイアウォールルールが再起動後も保持されるように設定されていることを確認します。クラウド環境ではセキュリティグループの設定を永続化します。
  • SSH設定の最適化と定期的なレビュー: sshd_config ファイルは、セキュリティとパフォーマンスの両面から適切に設定し、定期的にレビューします。不要な機能の無効化、セキュリティ強化のための設定(例: パスワード認証の無効化、鍵認証の強制、Rootログインの禁止など)を検討します。
  • ログ監視の導入: SFTP/SSHサーバーのログ(例: /var/log/auth.log やWindowsイベントログ)を定期的に確認し、接続拒否や認証失敗のパターンを早期に発見できるよう監視体制を構築します。
  • ネットワークとサーバーの稼働監視: サーバーが常に稼働しているか、またSSHポートが外部から到達可能であるかを監視するツール(Ping監視、ポート監視など)を導入します。
  • クライアント側の接続プロファイルの正確な管理: SFTPクライアント(WinSCP, FileZillaなど)で接続情報を保存する際は、ホスト名、ユーザー名、ポート番号、認証方法などを正確に入力し、間違いがないか定期的に確認します。

これらの対策を実施することで、「SFTP: Connection refused」エラーの発生を大幅に減らし、安定したSFTP接続環境を維持することができるでしょう。