LinuxサーバーへWindowsやmacOS端末からSSH接続する方法

この記事は 3 分で読めます。
概要

Windows端末やmacOS端末からLinux Ubuntu Serverへリモート接続する方法を紹介します。リモートアクセスにはサーバー側で暗号化に対応したOpen SSH をインストールし利用します。これによりセキュアなSSH接続を可能し、クライアントとサーバー間のトラフィックを外部からの盗聴・攻撃などから守ってくれます。

この記事の読者層

Windows/macOSからサーバーへリモート接続を行いたい方

リモートサーバーを立ち上げたい方

SSH接続のサーバー側の設定

サーバー機は Linux Ubuntu18.04 LTSを用意します。

遠隔地からサーバーへのリモート接続の方法は2種類あり、23番ポートを利用した「telent接続」と22番ポートを利用した「SSH接続」があります。前者は全データが暗号化されずに送受信されるのに対して、後者はパスワード情報を含めてすべてのデータが暗号化されます。このため、イントラネット内通信であればtelent接続でも良いですが、ネットワーク間の接続通信では、よりセキュアなSSH接続が推奨されます。

SSH接続のために、遠隔操作の対象となるサーバー側に以下で示すようにOpen SSH serverをインストールします。

$ sudo apt update
$ sudo apt install openssh-server

これにより外部からSSH接続できるようになり、また外部へSSH接続できるようになります。

SSH接続のクライアント側の設定

次にクライアント側からサーバー側へSSH接続を使ってアクセスします。SSH接続可能なアプリケーションは各OSで用意されており、Windows では「Tera Term」を、macOSでは「Terminal」を利用して接続します。

Windowsの場合

ターミナルエミュレーター「Tera Term」にて接続する方法

Windowsオンラインソフトがダウンロードできる定番サイト「窓の杜」から、Tera Term 日本語版をダウンロードします。スタンドアローンのソフトなのでZIPファイルを解凍するだけでインストール等は不要です。

Telnetとシリアル接続にも対応したこのターミナルエミュレーター「Tera Term」でTCP/IPでホストへのアクセスを試みます。

TCP/IPを選択

ホスト:サーバー側のホスト名 or IPアドレスを入力

サービス: SSH

SSHバージョン:SSH2

(SSH2は、SSH1の貧弱性を修正した新しいプロトコルです。)

次に、サーバー側のユーザー名とパスワードを入力することで、SSH接続が確立します。これにてリモート環境の構築が完了しました。

次に、セキュアなSSHキーを交換することで暗号化通信を行います。

SSH鍵生成の方法

Tera Termのメニューから「設定」→「SSH鍵生成」を選択しクリック(下記図が表示)

「TTSSH (Tera Term SSH) : 鍵生成」画面で「鍵の種類」としてRSAを選択し「生成」ボタンを押します。

他の鍵の種類とビット数の場合は下記を参照のこと。

以下、RSA1はセキュリティ上脆弱なので、現在はRSADSAを使用するのが一般的です。

鍵名ビット数説明
RSA1 (Rivest Shamir Adleman) 1024 SSHバージョン1で使われているが、本バージョンはセキュリティ
上安全とはいえない。
RSA2048SSHバージョン2. SSH1バージョンの改良型
DSA(Digital Signature Algorithm)1024
ECDSA
(Elliptic Curve Digital Signature Algorithm)
256
284
521
楕円曲線DSA
RSAの意味は?

RSAとは、代表的な公開鍵暗号の1つです。暗号の発明者である3人の名前 R. L. Rivest、A. Shamir、L. Adleman の頭文字をつなげて命名されたそうです。

生成後に下図のような表記となり、「鍵のパスフレーズ」と「パスフレーズの確認」部分に同じパスを入力します。

今回は空のパスフレーズで生成しておきます。(→後でパスワードフリーでアクセスできるようになります。)

その後、「公開鍵の保存」をクリックします。

「id_rsa.pub」というファイルができるのでこちらを任意のフォルダーに保存します。

同様に「秘密鍵の保存」を押すと「id_rsa」というファイルもできるのでこちらも任意のフォルダーに保存します。

以下のファイルを生成

公開鍵「id_rsa.pub」:サーバー側に送る鍵

秘密鍵「id_rsa」:クライアント側で保持する鍵

次に、SSHの鍵(公開鍵「id_rsa.pub」)の転送を行います。

TeraTerm windows上へ生成した公開鍵「id_rsa.pub」をドラッグアンドドロップすると「ファイル転送を行いますか?」というメッセージが表示されるので、「SCP」をクリックし、ファイルを転送します。このとき転送先は空で大丈夫です。

その後、ファイルを転送が完了したら、コマンド操作で公開鍵「~/id_rsa.pub」を「~/.ssh」ディレクトリ内へ移動。

$ mv ~/id_rsa.pub ~/.ssh

のように移動しておきます。すでにフォルダー内に公開鍵「id_rsa.pub」を以前どこかで生成され残っている場合は削除しておくことをお勧めします。

「.ssh」フォルダに移動して、id_rsa.pubをauthorized_keysに統合します。

$cd ~/.ssh
$cat id_rsa.pub>> authorized_keys

ここで、統合理由等に関しては以下のリンクを参照ください。

統合が終了した後は、「id_rsa.pub」は混乱の現況なので削除してください。

最後に再度Tera termでもう一度ログインします。

このとき、通常の「ユーザー名」と「パスワード」を入力して、秘密鍵「id_rsa」を選択してログインできるかと思います。

以上で確認終了です。

この設定をソフトに覚えさせるために、

Tera Termのメニューから「設定」→「SSH認証」を選択しクリック

その後に設定を保存すると、次からはTera termを起動後にパスワードフリーでリモートサーバーにアクセスできます。

macOSの場合

macOS 「Terminal」から接続する方法

macOSのTerminalから以下のsshコマンドを下記のようにタイプして、サーバー機へリモートアクセスを行う。

username : サーバー側のユーザー名

hostserver:サーバー側のホスト名 or IPアドレスを入力

$ ssh username@hostserver

基本操作はLinuxの場合と同じなので以下のSSH通信の鍵キー交換を参照ください。

SSH(Secure SHell Protocol) とは

SSHはポート番号22で接続する暗号化通信です。

Permission denied (publickey, password) のように出た場合、SSH (Secure SHell Protocol) キーが必要な場合がある。

外部からサーバーへ接続できない場合の対応方法

まれではありますが、Tera Termでアクセスできない。または、macOSのterminalで上記のようにリモートサーバーへ接続できない場合があります。

原因としては、以下を疑ってみてください。

①SSHポートが空いていない。

②サーバーのアドレス名が違っている。

③ネットワーク接続が切れている。

原因の確認方法としてまず、

① pingコマンドを使って対応してみてください。

Windowsの場合はDOSプロンプトから行い「192.168.12.1」へのアクセスができていれば下記のようになる。

$ping 192.168.12.1
192.168.12.1 に ping を送信しています 32 バイトのデータ:
192.168.12.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.12.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.12.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.12.1 からの応答: バイト数 =32 時間 <1ms TTL=255

192.168.12.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

できなければ、

$ping 192.168.12.10
192.168.12.10 に ping を送信しています 32 バイトのデータ:
192.168.12.4 からの応答: 宛先ホストに到達できません。
192.168.12.4 からの応答: 宛先ホストに到達できません。
192.168.12.4 からの応答: 宛先ホストに到達できません。
192.168.12.4 からの応答: 宛先ホストに到達できません。

192.168.12.10 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、

と表示されます。macOSの場合は、Terminalコマンドからの入力になります。

こちらで返答が帰ってこない場合には、servername もしくはIPアドレスが違っている可能性があります。また、接続元のクライアント機と接続先サーバー機、両方がネットワークに接続されているか、接続先のサーバー機が動いているかどうかも確認してみてください。

返答が帰ってくる場合には、SSHポートが空いていない場合があります。

以下を参照してネットワーク接続があるか、ポート番号がが空いているをご確認ください。

ポートが空いていない場合は、opensshが正しくインストールされているか確認してみてください。またFirewall等が働いている可能性もあるので確認してみましょう。

まとめ

本記事のポイント

✔ 遠隔地からサーバーへのリモート接続には、方法暗号化された「SSH接続」がセキュアな接続です。

✔ WindowsとmacOSともに、SSH接続には、SSH v2のRSA規格を利用する方が安全です。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です