Windows端末やmacOS端末からLinux Ubuntu Serverへリモート接続する方法を紹介します。リモートアクセスにはサーバー側で暗号化に対応したOpen SSH をインストールし利用します。これによりセキュアなSSH接続を可能し、クライアントとサーバー間のトラフィックを外部からの盗聴・攻撃などから守ってくれます。
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はセキュリティ上脆弱なので、現在はRSAかDSAを使用するのが一般的です。
鍵名 | ビット数 | 説明 |
---|---|---|
RSA1 (Rivest Shamir Adleman) | 1024 | SSHバージョン1で使われているが、本バージョンはセキュリティ 上安全とはいえない。 |
RSA | 2048 | SSHバージョン2. SSH1バージョンの改良型 |
DSA(Digital Signature Algorithm) | 1024 | |
ECDSA (Elliptic Curve Digital Signature Algorithm) | 256 284 521 | 楕円曲線DSA |
生成後に下図のような表記となり、「鍵のパスフレーズ」と「パスフレーズの確認」部分に同じパスを入力します。
今回は空のパスフレーズで生成しておきます。(→後でパスワードフリーでアクセスできるようになります。)
その後、「公開鍵の保存」をクリックします。

「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通信の鍵キー交換を参照ください。
外部からサーバーへ接続できない場合の対応方法
まれではありますが、Tera Termでアクセスできない。または、macOSのterminalで上記のようにリモートサーバーへ接続できない場合があります。
原因としては、以下を疑ってみてください。
原因の確認方法としてまず、
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等が働いている可能性もあるので確認してみましょう。
まとめ