SSHサーバーのインストール

WindowsでSSHサーバーをインストールする方法を見ていきます。

SSHクライアントはWindows 10以降にインストールされています。

前提条件

  • Windows Server 2019またはWindows 10 (build 1809)以上
  • PowerShell 5.1以上
  • 管理者アカウント

インストール

  1. PowerShellを管理者権限で実行

  2. SSHサーバーのインストール

    コマンド :

    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

    出力 :

    Path          :
    Online        : True
    RestartNeeded : False

    成功裏にインストールされると、OnlineTrueとして表示されます。

実行

SSHサーバーを実行

  • 実行

    単独で実行する方法です。

    コマンド :

    Start-Service sshd

    出力 なし

  • サービスの自動実行

    Windows起動時に自動で実行されるように設定します。

    コマンド :

    Set-Service -Name sshd -StartupType 'Automatic'

    出力 なし

  • ファイアウォールの許可

    ファイアウォールでSSHサーバーが使用する22番ポートへのアクセスを許可します。

    コマンド :

    if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
        Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
        New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
    } else {
        Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
    }

チェック

  • SSHサーバーの状態確認

    実際にサービスが実行されているか確認します。

    コマンド :

    Get-Service -Name 'sshd'

    出力 :

    Status   Name               DisplayName
    ------   ----               -----------
    Running  sshd               OpenSSH SSH Server
    

    StatusRunningであれば正常に実行されています。
    StatusStoppedであれば、Start-Service sshdコマンドを実行後、再度確認します。

  • 接続確認

    • 自分のアカウント確認

      Windowsインストール初期にMicrosoftアカウントで作成した場合、メールのIDがアカウント名です。
      5文字を超えるIDについては変更されるため、正確に確認します。

      コマンド :

      Write-Output $env:UserName

      出力 :

      xiyo
      

      実際のシステムアカウント名が出力されます。

    • ローカルSSH接続

      コマンド :

      ssh xiyo@localhost

      xiyoを自分のアカウントに変更します。

      出力 :

      The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
      ECDSA key fingerprint is SHA256:D/StxC2FjSpxjD9X+QcXyhHJHb0tfC+Hn9iFMbZooTM.
      Are you sure you want to continue connecting (yes/no/[fingerprint])?
      

      初回接続時に接続情報を保存します。
      yesと入力してエンターを押します。

      続いてパスワードを尋ねられます。

      出力 :

      [email protected]'s password:
      

      パスワード入力時には画面に何も表示されません。
      パスワードを入力してエンターを押します。

      成功裏に接続されると新しいコマンドプロンプトが表示されます。

    • 外部SSH接続

      外部接続はホストのIPアドレスを変更して実行すればよいです。

      コマンド :

      ssh [email protected]

      ローカル接続とシナリオは同じです。

トラブルシューティング

外部から接続できない場合

ローカルで接続に成功したが、外部から接続できない場合、いくつかの状況があります。

ファイアウォールのブロック

ネットワークのどこかでファイアウォールがSSH接続をブロックしています。

出力 :

ssh: connect to host 192.168.1.10 port 22: Connection refused

22番ポートが外部からのアクセスをブロックされています。

すべてのファイアウォールを無効にし、サーバーからルーターまで順に有効にしながらテストします。

ホストに接続できない

192.168.1.10を入力する際に、誤って0を一つ追加した状況です。

出力 :

ssh: connect to host 192.168.1.100 port 22: Network is unreachable

ネットワークで見つからないIPアドレスです。

IPアドレスを確認して再試行します。

ホスト接続タイムアウト

192.168.1.10ではなく192.168.2.10の別のネットワーク帯域に接続する状況です。

出力 :

ssh: connect to host 192.168.2.10 port 22: Operation timed out

ネットワーク帯域が異なるため、応答がありません。

IPアドレスを確認して再試行します。

first commit : 24/09/07
last commit : 24/09/08
Made By Svelte Rune, Designed By chimi
last commit : 24/10/17 comment : :memo: 문장 레벨 변경