Windows端末やmacOS端末からLinux Ubuntu Serverへリモート接続する方法を紹介します。リモートアクセスにはサーバー側で暗号化に対応したOpen SSH をクライアント側ではTera Termを使い解説します。これによりセキュアなSSH接続を可能し、クライアントとサーバー間のトラフィックを外部からの盗聴・攻撃などから守ってくれます。
本記事の読者層は以下の方を想定しています。
- Windows/macOSからサーバーへリモート接続を行いたい方
- リモートサーバーを立ち上げたい方
SSH接続のサーバー側の設定
遠隔地からサーバー機へのリモート接続する方法には以下2種類あります。
リモート接続する2つの方法
- ①23番ポートを利用した「telent接続」
- ②22番ポートを利用した「SSH接続」
①の前者は全データが暗号化されずにデータが送受信されるます。
②の後者はパスワード情報を含めてすべてのデータが暗号化されます。
このため、イントラネット内通信(内側のネットワーク)であればtelent接続でも良いですが、ネットワーク間の接続通信は、よりセキュアなSSH接続が推奨されます。
セキュアなSSH接続する方法
SSH接続のために、遠隔操作の対象となるサーバー側に「Open SSH server」をインストールします。
実行例
$ sudo apt update
$ sudo apt install openssh-server
これにより外部からSSH接続できるようになり、また外部へSSH接続できるようになります。
(注)サーバー機は Linux Ubuntu18.04/20.04 LTS環境下で行いました。
Windowsの場合:SSH接続のクライアント側の設定
次にクライアント側からサーバー側へSSH接続を使ってアクセスします。
SSH接続可能なアプリケーションは各OSで用意されており、Windows では「Tera Term」を、macOSでは「Terminal」を利用して接続します。
次にその方法を解説します。
ターミナルエミュレーター「Tera Term」にて接続する方法
Windowsオンラインソフトがダウンロードできる定番サイト「窓の杜」から、Tera Term 日本語版をダウンロードします。
スタンドアローンのソフトなのでZIPファイルを解凍するだけでインストール等は不要です。
Telnetとシリアル接続にも対応したこのターミナルエミュレーター「Tera Term」でTCP/IPでホストへのアクセスを試みます。
- ホスト:サーバー側のホスト名 or IPアドレスを入力
- サービス: SSH
- SSHバージョン:SSH2
- (SSH2は、SSH1の貧弱性を修正した新しいプロトコルです。)
次に、サーバー側のユーザー名とパスワードを入力することで、SSH接続が確立します。
これにてリモート環境の構築が完了しました。
次に、セキュアなSSHキーを交換することで暗号化通信を行います。
Tera TermのSSH鍵生成の方法
STEP1 TeraTerm上で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 |
RSAの意味は?
RSAとは、代表的な公開鍵暗号の1つです。
暗号の発明者である3人の名前 R. L. Rivest、A. Shamir、L. Adleman の頭文字をつなげて命名されたそうです。
STEP2 公開鍵と秘密鍵の保存
秘密鍵の保存
生成後に下図のような表記となり、「鍵のパスフレーズ」と「パスフレーズの確認」部分に同じパスを入力します。
今回は空のパスフレーズで生成しておきます。(→後でパスワードフリーでアクセスできるようになります。)
その後、「公開鍵の保存」をクリックします。
「id_rsa.pub」というファイルができるのでこちらを任意のフォルダーに保存します。
以前、別のサーバーですでに作成されている場合はid_rsa2.pubと保存して頂いてもOK.
公開鍵の保存
同様に「秘密鍵の保存」を押すと「id_rsa」というファイルもできるのでこちらも任意のフォルダーに保存します。
別のサーバーですでに作成されている場合はid_rsa2と保存して頂いてもOK.
以下のファイルを生成
公開鍵「id_rsa.pub」:サーバー側に送る鍵
秘密鍵「id_rsa」:クライアント側で保持する鍵
STEP3 公開鍵をサーバー側へ転送
次に、SSHの鍵(公開鍵「id_rsa.pub」)の転送を行います。
TeraTerm windows上へ生成した公開鍵「id_rsa.pub」をドラッグアンドドロップすると「ファイル転送を行いますか?」というメッセージが表示されるので、「SCP」をクリックし、ファイルを転送します。
このとき転送先は空で大丈夫です。この場合は転送先が現在のホームディレクトリ上にファイルができているはずです。
その後、ファイルを転送が完了したら、コマンド操作で公開鍵「~/id_rsa.pub」を「~/.ssh」ディレクトリ内へ移動。
$ mv ~/id_rsa.pub ~/.ssh
のように移動しておきます。すでにフォルダー内に公開鍵「id_rsa.pub」を以前どこかで生成され残っている場合は削除しておくことをお勧めします。
STEP4 公開鍵の統合とサーバー側へ登録
「.ssh」フォルダに移動して、id_rsa.pubをauthorized_keysに統合します。
$cd ~/.ssh
$cat id_rsa.pub>> authorized_keys
ここで、統合理由等に関しては以下のリンクを参照ください。
保存したファイル名が違っている場合
cat id_rsa2.pub>>authorized_keys
として頂ければ大丈夫です。
統合が終了した後は、「id_rsa.pub」は混乱の現況なので削除してください。
最後に再度Tera termでもう一度ログインします。
このとき、通常の「ユーザー名」と「パスワード」を入力して、秘密鍵「id_rsa」を選択してログインできるかと思います。
以上で確認終了です。
STEP5 ログインの確認
この設定をソフトに覚えさせるために、
Tera Termのメニューから「設定」→「SSH認証」を選択しクリック
その後に設定を保存すると、次からはTera termを起動後にパスワードフリーでリモートサーバーにアクセスできます。
その後、Tera Termのメニューから「設定」>「設定の保存」からこれらの設定を[teraterm.ini]ファイルに保存しておきます。
macOSの場合:SSH接続のクライアント側の設定
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のPowerShellなどを利用pingが飛ぶか確認してみてください。
サーバーアドレス(たとえば、「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
と表示されます。macOSの場合は、Terminalコマンドからの入力になります。
返答が帰ってくる場合には、SSHポートが空いていない場合があります。
ポートが空いていない場合は、opensshが正しくインストールされているか確認してみてください。
以下を参照してネットワーク接続があるか、ポート番号がが空いているをご確認ください。
アクセスできない場合
$ping 192.168.12.1
192.168.12.1 に ping を送信しています 32 バイトのデータ:
192.168.12.1 からの応答: 宛先ホストに到達できません。
192.168.12.1 からの応答: 宛先ホストに到達できません。
192.168.12.1 からの応答: 宛先ホストに到達できません。
192.168.12.1 からの応答: 宛先ホストに到達できません。
192.168.12.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
こちらで返答が帰ってこない場合には、servername もしくはIPアドレスが違っている可能性があります。
③の場合、接続元のクライアント機と接続先サーバー機、両方がネットワークに接続されているか、接続先のサーバー機が動いているかどうかも確認してみてください。
またFirewall等が働いている可能性もあるので確認してみましょう。
まとめ
- 遠隔地からサーバーへのリモート接続には、方法暗号化された「SSH接続」がセキュアな接続です。
- WindowsとmacOSともに、SSH接続には、SSH v2のRSA規格を利用する方が安全です。
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
コメント