Windows端末(Tera Term)やmacOS端末(Terminal)から、Linux Ubuntu ServerへSSH接続し、公開鍵認証で安全にログインする方法を紹介します。サーバー側には暗号化通信に対応したOpenSSHを、クライアント側にはTera Termを使います。SSH接続により、クライアントとサーバー間の通信を、外部からの盗聴や攻撃から守れます。
管理人本記事の読者層は以下の方を想定しています。
- Windows/macOSからサーバーへリモート接続を行いたい方
- リモートサーバーを立ち上げたい方
Windowsで試す方は、先にTera Termを用意してください。ダウンロード先は次のとおりです。macOSでは標準のTerminalを使うため、ダウンロードは不要です。
Tera Term(Windows)のダウンロード先
- Tera Term公式(GitHub):「Releases」の最新版から、x64・x86・arm64のうちお使いのPCに合うものを選びます
- 窓の杜のTera Term配布ページ:64bit版のインストーラー版とポータブル版を入手できます
- 最新版は5.7.1(2026年10月9日公開)です。SSH2の脆弱性が修正された5.6.2以降をお使いください
Ubuntu(Linux)サーバー側のSSH接続設定
WindowsのTera TermやmacOSのTerminalから、Linux Ubuntu Serverへリモート接続するには、まずサーバー側(Ubuntu)にSSH接続を受け付ける設定が必要です。
遠隔地からサーバー機へリモート接続する方法には、以下の2種類があります。
リモート接続する2つの方法
- ①23番ポートを利用した「Telnet接続」
- ②22番ポートを利用した「SSH接続」
Telnetは、パスワードを含む全データが暗号化されずに送受信されます。SSHは、パスワードを含むすべてのデータが暗号化されます。
このため、Telnetは閉じた社内ネットワークに限った用途とし、ネットワークをまたぐ接続にはSSH接続が推奨されます。
セキュアなSSH接続する方法
SSH接続のために、遠隔操作の対象となるサーバー側に「OpenSSH Server」をインストールします。
実行例
$ sudo apt update
$ sudo apt install openssh-serverこれでサーバーが、外部からのSSH接続を受け付けるようになります。
(注)サーバー機は Linux Ubuntu 22.04/24.04/26.04 LTS環境下で動作確認しています(Ubuntu 18.04/20.04 LTSは標準サポートが終了しているため、現行LTSバージョンのご利用を推奨します)。
Windowsの場合:Tera TermでSSH接続する(クライアント側の設定)
次にクライアント側からサーバー側へSSH接続します。
SSH接続できるアプリケーションは各OSで用意されており、Windowsでは「Tera Term」を、macOSでは「Terminal」を利用します。まずは、Windows(Tera Term)の方法から解説します。
ターミナルエミュレーター「Tera Term」にて接続する方法
Tera Termは、冒頭のダウンロード先から入手します。インストーラー版(.exe)のほか、解凍するだけで使えるポータブル版(.zip)もあります。
Telnetとシリアル接続にも対応したターミナルエミュレーター「Tera Term」を起動し、「新しい接続」でTCP/IPを選んでホストへ接続します。
- ホスト:サーバー側のホスト名 or IPアドレスを入力
- サービス: SSH
- SSHバージョン:SSH2
- (SSH2は、SSH1の弱点を改良した新しいプロトコルです。)


初めて接続すると、サーバーの鍵(フィンガープリント)の確認画面が表示されます。内容を確認し、問題がなければ「続行」を選びます。次に、認証画面でサーバー側のユーザー名とパスワードを入力すると、SSH接続が確立します。
ここまででSSH接続は完了です。次に、パスワードの代わりに鍵で認証する「公開鍵認証」を設定します。
Tera TermのSSH鍵生成の方法
STEP1 Tera Term上でSSH鍵を生成
Tera Termのメニューから「設定」→「SSH鍵生成」を選ぶと、下記の画面が表示されます。
「TTSSH (Tera Term SSH) : 鍵生成」画面で「鍵の種類」にED25519を選択し、「生成」ボタンを押します。


選べる鍵の種類は、次のとおりです。
現在の標準はED25519です。RSA1(SSH1用)は廃止済み、DSAはOpenSSH 10.0で削除されたため、現在のOpenSSHでは使えません。古いサーバーとの互換性が必要な場合のみ、RSA(4096ビット以上)を使います。
| 鍵名 | ビット数 | 説明 |
|---|---|---|
| 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 |
ED25519の意味は?
ED25519とは、楕円曲線暗号(Edwards-curve Digital Signature Algorithm)を用いた、現在標準的に推奨されている公開鍵暗号方式です。
RSAやDSAと比べて鍵のサイズが小さく、生成・署名の速度や安全性にも優れています。
STEP2 公開鍵と秘密鍵の保存
生成が終わると、下図の画面で「鍵のパスフレーズ」と「パスフレーズの確認」に、同じ文字列を入力できます。本記事では手順を簡単にするため、空のままにします(ログイン時の入力が不要になります)。ただし、秘密鍵のファイルが他人の手に渡ると誰でもログインできてしまうため、安全に使うならパスフレーズの設定をお勧めします。


公開鍵の保存
「公開鍵の保存」をクリックし、「id_ed25519.pub」を任意のフォルダーに保存します。
秘密鍵の保存
同様に「秘密鍵の保存」を押し、「id_ed25519」も保存します。保存先は任意ですが、秘密鍵は他の人が触れないフォルダーに置き、ログイン時に指定します。
別のサーバー用の鍵がすでにある場合は、上書きしないよう「id_ed25519_2」のように名前を変えて保存します。
以下のファイルを生成
公開鍵「id_ed25519.pub」:サーバー側に送る鍵
秘密鍵「id_ed25519」:クライアント側で保持する鍵
STEP3 公開鍵をサーバー側へ転送
次に、公開鍵「id_ed25519.pub」をサーバーへ転送します。サーバーにログインしたTera Termの画面へ、保存した公開鍵をドラッグ&ドロップし、「ファイル転送を行いますか?」と表示されたら「SCP」をクリックします。
転送先は空欄で構いません。ログインユーザーのホームディレクトリに、ファイルが保存されます。
転送が完了したら、公開鍵「~/id_ed25519.pub」を「~/.ssh」ディレクトリ内へ移動します。
$ mkdir -p ~/.ssh
$ mv ~/id_ed25519.pub ~/.ssh「~/.ssh」に以前の公開鍵「id_ed25519.pub」が残っている場合は、削除しておくことをお勧めします。
STEP4 公開鍵の統合とサーバー側へ登録
「.ssh」ディレクトリへ移動し、id_ed25519.pubをauthorized_keysに統合(追記)します。
$ cd ~/.ssh
$ cat id_ed25519.pub >> authorized_keys鍵を統合したら、パーミッション(権限)の設定を必ず行ってください。 OpenSSHは.sshディレクトリやauthorized_keysの権限が緩すぎると、鍵が正しくても認証を拒否する仕様になっています。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keysパーミッションが原因でログインできない場合
鍵は正しいはずなのに「Permission denied (publickey)」と表示される場合、.sshディレクトリやauthorized_keysのパーミッションが正しく設定されていないことが原因のケースが多くあります。上記のchmodコマンドを再度実行して確認してください。
公開鍵をauthorized_keysにまとめる理由は、後ろの関連記事カードで解説しています。保存名を変えた場合は、次のようにファイル名を読み替えます。
保存したファイル名が違っている場合
cat id_ed25519_2.pub>>authorized_keys
として頂ければ大丈夫です。


統合が終了した後は、「id_ed25519.pub」は混乱の原因になるので削除してください。
STEP5 ログインの確認
Tera Termで再度サーバーに接続し、秘密鍵でログインできるか確認します。「ファイル」→「新しい接続」でホストを入力すると、認証画面が表示されます。
ここで、ユーザー名を入力し(パスフレーズを設定した場合は、パスフレーズも入力します)、「RSA/DSA/ECDSA/ED25519鍵を使う」にチェックを入れて、秘密鍵「id_ed25519」を指定し、「OK」を押します。
ログインできたら、この設定をTera Termに覚えさせます。「設定」→「SSH認証」で、ユーザー名と秘密鍵のファイルを指定します。


その後、「設定」→「設定の保存」で、これらの設定を[teraterm.ini]ファイルに保存します。次回からは、Tera Termを起動して接続するだけで、パスワードフリーでリモートサーバーにアクセスできます(空のパスフレーズの場合)。
macOSの場合:SSH接続のクライアント側の設定
macOS 「Terminal」から接続する方法
macOSのTerminalから以下のsshコマンドを下記のようにタイプして、サーバー機へリモートアクセスを行います。
username : サーバー側のユーザー名
hostserver:サーバー側のホスト名 or IPアドレスを入力
$ ssh username@hostserver基本操作はLinuxの場合と同じです。鍵認証の設定は、次の見出しで説明します。
macOSでED25519鍵を作成してパスワードフリーでログインする方法
Windows側(Tera Term)と同様に、macOSでも鍵認証を設定できます。macOSのTerminalにはssh-keygenコマンドが標準で用意されているため、追加のソフトは不要です。
$ ssh-keygen -t ed25519実行すると保存先(既定は~/.ssh/id_ed25519)とパスフレーズの入力を求められます。パスフレーズは空のままEnterでも構いません(Windows側の解説と同様、パスワードフリーでアクセスできます)。
生成した公開鍵をサーバー側へ転送し、authorized_keysに登録します。ssh-copy-idコマンドを使うと、転送と登録を1つのコマンドでまとめて行えます。
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub username@hostserver登録が完了したら、以下のコマンドでパスワードなしにログインできることを確認してください。
$ ssh -i ~/.ssh/id_ed25519 username@hostserverWindows側と同じく、.sshディレクトリとauthorized_keysのパーミッションが正しいことが前提です(サーバー側の設定は共通のため、上記STEP4のパーミッション設定を参照してください)。


SSHとは
SSHは、ポート番号22番で通信を暗号化してサーバーに接続する方式です。
「Permission denied (publickey, password)」と表示された場合は、鍵認証・パスワード認証のどちらも失敗した状態です。ユーザー名、パスワード、鍵の設定を確認してください。
外部からサーバーへ接続できない場合の対応方法
まれではありますが、Tera TermやmacOSのTerminalから、リモートサーバーへ接続できない場合があります。
このときは、以下の原因を疑ってみてください。
外部サーバーへ接続出来ない場合の対処方法
①SSHポートが空いていない。
②サーバーのアドレス名が違っている。
③ネットワーク接続が切れている。
④(鍵認証の場合).sshディレクトリやauthorized_keysのパーミッションが正しくない。
⑤(鍵認証の場合)認証画面で、秘密鍵ではなく公開鍵(.pub)を指定している。
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 Serverが正しくインストールされているか確認してください。
以下を参照して、ネットワーク接続があるか、ポート番号が空いているかをご確認ください。




アクセスできない場合
$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% の損失)、「宛先ホストに到達できません」と表示される場合は、サーバー名もしくはIPアドレスが違っている可能性があります。
③の場合は、接続元のクライアント機と接続先のサーバー機の両方がネットワークに接続されているか、サーバー機が動いているかも確認してください。
ファイアウォールが通信を遮断している可能性もあるため、あわせて確認しましょう。
まとめ
Windows(Tera Term)・macOSともに、Linux Ubuntu ServerへSSH接続し、公開鍵認証でログインする方法を紹介しました。
- 遠隔地からサーバーへのリモート接続には、通信が暗号化される「SSH接続」がセキュアな方法です。
- SSH接続の鍵には、現在標準的に推奨されているED25519を使います(DSAは使用不可・RSAは互換性維持用)。
- 公開鍵をauthorized_keysに登録し、
.sshディレクトリのパーミッションを正しく設定すれば、秘密鍵でログインできます。
まずはTera Termを最新版にして、ED25519の鍵でSSH接続を試してみてください。
関連リンク









コメント
コメント一覧 (1件)
[…] SEO対策の賢者 Tera Termを利用したSSH鍵の生成方法とサーバーへのアクセス – SEO対策の賢者 Windows端末やmacOS端末からLinux Ubuntu Serverへリモート接続する方法を紹介します。リモー […]