【OpenSSH】SSH構築手順(WIndows & Linux)

Other

■ 主の PC環境一覧

OS:Windows11
CPU:Intel® Core™ i9 13900KF
Memory:64GB
GPU:NVIDIA® GeForce RTX™ 3070 8GB


■ 初めに

SSH(Secure Shell)は、セキュアな通信を提供するプロトコルであり、主にリモートシステムへのアクセスに利用されています。

SSHは通信を暗号化し、データの安全性を確保します。
これにより、ユーザーが機密情報やパスワードを送信する際に、第三者による不正アクセスや傍受から守られます。
また、認証においてはパスワードだけでなく、公開鍵認証などの高度な手法も採用され、セキュリティを一層強化しています。

これにより、ユーザーは安心してリモートサーバーにアクセスし、データの転送や管理を行うことができます。
強固なセキュリティが特徴の SSHは、ネットワーク通信における信頼性を向上させ、情報セキュリティの観点から重要な役割を果たしています。


■ Windows編

以下、管理者権限で Powershellを起動し、下記コマンドを実行する。

[1] OpenSSHのインストール確認(クライアント / サーバー)

インストールされている場合  :Installed
インストールされていない場合 :NotPresent

// Install the OpenSSH
$ Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'


# Name  : OpenSSH.Client~~~~0.0.1.0
# State : Installed
# 
# Name  : OpenSSH.Server~~~~0.0.1.0
# State : NotPresent

[2] OpenSSHのインストール実行(クライアント / サーバー)

インストール完了後、コメント(#)の内容が出力されていれば問題なし。

// Install the OpenSSH Client
$ Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

// Install the OpenSSH Server
$ Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


# Path          :
# Online        : True
# RestartNeeded : False

[3] ファイアウォール (Windows Defender Firewall) の設定

OpenSSHを起動させても、ファイアウォールが有効になっていると外部端末から接続することができません。
インストール時点で、自動的にファイアウォールの設定はされていますが念のため実行しておいても問題ありません。

そのため、SSHで使用される「ポート 22」を明示的に開放します。

OpenSSH Serverをインストールすると、自動的に「OpenSSH-Server-In-TCP」という名前のファイアウォール規則が作成され有効化されます。
これにより、ポート 22での SSH受信トラフィックが許可されます。

※ 引数の「-DisplayName」は任意の名前を付けて良い。

$ New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName OpenSSH-Server-In-TCP

コマンドではなく、GUIから設定したい場合や既存の設定を確認したい場合
コントロールパネル > システムとセキュリティ > Windows Defender ファイアウォール > 詳細設定 > 受信の規則
から確認及び削除、新規規則追加 等が可能


[4] OpenSSH Serverを起動 / 停止 / 自動起動

// 起動
$ Start-Service sshd

// 停止
$ Stop-Service sshd


// Windows起動時、自動的に OpenSSH Serverを起動したい場合
$ Set-Service -Name sshd -StartupType Auto

[5] 外部端末(クライアントPC)から SSH接続

ユーザー名:使用しているPC(Windows)のユーザー名
パスワード:PCログイン時のパスワード
例)$ ssh example@127.0.0.1

// 実行後 passwordを入力して Enterを押下
$ ssh <ユーザー名>@<IPアドレス>
# <ユーザー名>@<IPアドレス>'s password:


// 接続完了
# Microsoft Windows [Version 10.0.14393]
# (c) 2016 Microsoft Corporation. All rights reserved.
# 
# <ユーザー名>@<IPアドレス> C:\Users\<ユーザー名>

接続後のデフォルト CLI(コマンドラインインターフェース)は、CommandPromptのため、Powershellを使用したい場合は、接続後に「$ Powershell」と入力するだけで切り替えが可能。


■ Linux (Ubuntu etc…) 編

[1] OpenSSHのインストール確認(クライアント / サーバー)

Ubuntuでは、基本的に OpenSSHはデフォルトでインストールされています。

インストールされている場合  :バージョン表記
インストールされていない場合 :バージョン表記

// Install the OpenSSH
$ rpm -qa | grep openssh


# openssh-askpass-3.4p1-2
# openssh-3.4p1-2
# openssh-server-3.4p1-2
# openssh-askpass-gnome-3.4p1-2
# openssh-clients-3.4p1-2

[2] OpenSSHのインストール実行(クライアント / サーバー)

// aptアップデート
$ sudo apt update


// Install the OpenSSH Client
$ sudo apt install openssh-client

// Install the OpenSSH Server
$ sudo apt install openssh-server

[3] ファイアウォール (Windows Defender Firewall) の設定

OpenSSHを起動させても、ファイアウォールが有効になっていると外部端末から接続することができません。
インストール時点で、自動的にファイアウォールの設定はされていますが念のため実行しておいても問題ありません。

// ファイアウォールの状態確認
$ sudo ufw status

// 基本的には"無効"となっている
# Status: inactive


// ssh許可
$ sudo ufw allow ssh

[4] OpenSSH Serverを起動 / 停止 / …等

使用している Linuxのディストリビューションによって操作コマンドが異なる。

Debian系(Ubuntu / Debian)

Ubuntu 15.04 以降
// 起動
$ sudo systemctl start ssh

// 停止
$ sudo systemctl stop ssh

// 再起動
$ sudo systemctl restart ssh

// 設定リロード
$ sudo systemctl reload ssh

// 自動起動の有効化
$ sudo systemctl enable ssh

// 自動起動の無効化
$ sudo systemctl disable ssh
Ubuntu 14.10 以前
// 起動
$ sudo service start ssh

// 停止
$ sudo service stop ssh

// 再起動
$ sudo service restart ssh

// 設定リロード
$ sudo service reload ssh

Red Hat系(RHEL / Fedora / CentOS / Rocky Linux)

CentOS 7.x / 8.x
// 起動
$ systemctl start sshd.service

// 停止
$ systemctl stop sshd.service

// 再起動
$ systemctl restart sshd.service

// 設定リロード
$ systemctl reload sshd.service
CentOS 4.x / 5.x / 6.x
// 起動
$ service sshd start

// 停止
$ service sshd stop

// 再起動
$ service sshd restart

// 設定リロード
$ service sshd reload

[5] 外部端末(クライアントPC)から SSH接続

ユーザー名:使用しているPC(Linux)のユーザー名
パスワード:ユーザーのパスワード
例)$ ssh example@127.0.0.1

// 実行後 passwordを入力して Enterを押下
$ ssh <ユーザー名>@<IPアドレス>
# <ユーザー名>@<IPアドレス>'s password:

■ 最後に

SSH構築に成功し、WIndows と Linux(Ubuntu)の双方で安全で確立されたリモートアクセスが可能です。
セキュリティと利便性を兼ね備えた SSHは、ネットワーク管理やデータ転送において頼りになる存在です。
安心して利用できる環境を構築する手助けになれば幸いです。安全なコミュニケーションとシステム管理の新しい一歩を踏み出しましょう。
お疲れさまでした。

comment 📝

タイトルとURLをコピーしました