古いLinuxサーバーからWindows Serverのファイル共有(SMB)にマウントしようとした際、「 Protocol negotiation failed 」などのエラーで接続できないことがあります。
これは、近年のWindows Serverではセキュリティ上の理由から「SMB 1.0(CIFS)」プロトコルがデフォルトで無効化(または削除)されていることが主な原因です。
今回は、古いLinux機器からの接続を一時的に許可するために、Windows Server側で「SMB 1.0/CIFS ファイル共有サポート」機能を追加・有効化する手順を解説します。
⚠️ セキュリティに関する重要な注意
SMB 1.0 は古いプロトコルであり、過去に重大な脆弱性(WannaCry等)の標的となったため、Microsoftにより非推奨とされています。
運用環境での使用は「新しいLinuxへの移行までの動作品」や「孤立した内部ネットワーク内」など一時的な措置に留め、可能な限りLinux側のCIFS/SMBバージョン(SMB 2.1以上)のアップデートを検討してください。
方法1:PowerShellコマンドで一括追加する(おすすめ)
管理者権限でPowerShellを開き、コマンド1行で迅速に追加できます。
PowerShell
# SMB1.0のコンポーネントを追加
Install-WindowsFeature -Name FS-SMB1
コマンド実行後、Success : True と表示され、再起動を促された場合はサーバーを再起動すれば完了です。
方法2:GUI(サーバーマネージャー)から追加する手順
画面操作で設定したい場合は、サーバーマネージャーから追加します。
設定後の動作確認
機能の追加後、古いLinuxサーバー側から再度 mount -t cifs コマンド等で接続を試みてください。
Bash
# Linux側からの接続例(vers=1.0 を明示する場合)
mount -t cifs //192.168.x.x/share /mnt/win_share -o username=SMBuser,password=SMBpass,vers=1.0
無事にマウントできれば作業完了です。
まとめ
-
古いLinuxからのファイル共有エラーは SMB 1.0の無効化 が原因のことが多い
-
PowerShellなら
Install-WindowsFeature -Name FS-SMB1で即座に追加可能 -
セキュリティリスクが高いため、接続作業後は速やかにSMB 2.0以降への移行計画を立てるのが安全
システムの移行期などでどうしても一時的に古いプロトコルが必要な場合は、上記手順で対応してみてください。
【参考】最新のWindows Serverでも対応可能か
最新のWindows Server(Windows Server 2022やWindows Server 2025など)でも、SMB 1.0コンポーネントを追加して有効化することは可能です。
前述のPowerShellコマンド(Install-WindowsFeature -Name FS-SMB1)もそのまま機能します。ただし、最新OSではセキュリティが大幅に強化されているため、単にSMB 1.0を追加するだけでは接続できないケースが増えています。
最新OSで引っかかりやすい追加のセキュリティ制限
-
ゲストアクセスのブロック
最新のWindows Serverでは、ユーザー認証を伴わない「未認証のゲストアクセス(Insecure Guest Logons)」が既定で完全に遮断されています。古いLinuxが匿名/ゲストでアクセスしている場合、グループポリシー等でゲストアクセスを明示的に許可しないと弾かれます。
-
SMB署名(SMB Signing)の必須化
Windows Server 2025などでは、通信の改ざんを防ぐ「SMB署名」が既定で必須化されています。古いLinux側のCIFSクライアントがSMB署名に対応していない場合、接続エラーになります。
-
古いNTLM認証の制限
古いLinuxが暗号化強度の低いNTLMv1などの認証方式を使っている場合、Windows側のセキュリティポリシーによって認証が拒否されることがあります。
Windows側のセキュリティを下げる前に行いたい対策
Windows Server側でSMB 1.0を有効化したりセキュリティ設定を緩めたりすると、サーバー全体がランサムウェアなどのリスクに晒されます。
もしLinux側で cifs-utils やカーネルの更新が可能であったり、マウント時のオプションで vers=2.0 や vers=2.1 が指定できる状態であれば、Linux側をSMB 2.0以降で接続できるように改修する方が安全です。
【参考】LinuxがRed Hat Enterprise Linux 6(RHEL 6)の場合
Red Hat Enterprise Linux 6(RHEL 6)の場合、マイナーバージョン(6.4以降かそれ以前か)によって、Windows Server 側で SMB 1.0 の有効化が必要かどうかが変わります。
1. RHEL 6 のバージョンによる SMB 対応状況
-
RHEL 6.4 以降:カーネルに SMB 2.0 のバックポート(移植)が入っているため、SMB 2.0 (
vers=2.0) で接続可能です。Windows 側の SMB 1.0 を有効化せずに接続できます。 -
RHEL 6.0 〜 6.3:SMB 1.0 (
vers=1.0) にしか対応していません。Windows Server 側で SMB 1.0 のコンポーネント追加が必須になります。
2. 【推奨】SMB 2.0 で接続を試す方法(RHEL 6.4以降)
RHEL 6.4 以降であれば、マウント時に vers=2.0 を明示することで最新の Windows Server に接続できます。
# SMB 2.0 を明示してマウントする例
mount -t cifs //WindowsServer-IP/ShareName /mnt/win_share \
-o username=WinUser,password=WinPass,vers=2.0,sec=ntlmssp
ポイント:
sec=ntlmsspを指定することで、最新 Windows が求める NTLMv2 認証および SMB 署名に対応しやすくなります。
3. SMB 1.0 を使わざるを得ない場合(RHEL 6.0〜6.3)
Windows Server 側に FS-SMB1 を追加した上で、RHEL 6 側から SMB 1.0 で接続する場合は以下の点に注意が必要です。
# SMB 1.0 で接続する例
mount -t cifs //WindowsServer-IP/ShareName /mnt/win_share \
-o username=WinUser,password=WinPass,vers=1.0,sec=ntlmssp
最新 Windows Server 接続時のハマりポイント:
-
匿名/ゲスト接続は不可:最新 Windows はゲストアクセスを拒否するため、
usernameとpasswordに実在する Windows アカウントの指定が必須です。 -
認証エラーが出たら:認証が失敗する場合は
sec=ntlmv2またはsec=ntlmsspを明示的に指定してください。
まずはお使いの RHEL 6 で cat /etc/redhat-release を実行してマイナーバージョンを確認し、6.4 以降であれば vers=2.0 での接続をお試しください。
