InfraAcademy

InfraAcademy Blog

SSHの設定方法とは?Linuxへリモート接続する手順を初心者向けに解説

| #Linux #Linux初心者 #Linux入門
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、インフラエンジニアのryuです。

今回の記事では、Linuxへリモート接続するためのSSHの設定方法を、初心者向けにわかりやすく解説します。

サーバーを構築すると、別のパソコンからSSHで接続して操作する場面が多くあります。しかし、初めて設定すると「どのパッケージを入れるの?」「接続できないときは、どこを確認するの?」と迷いやすいのではないでしょうか。

この記事では、Ubuntu・Debian系LinuxへOpenSSH Serverをインストールし、Windows、macOS、Linuxから接続するまでの流れを解説します。

SSHの設定方法を詳しく解説

SSHの基本的な設定手順は、次のとおりです。

  1. LinuxへOpenSSH Serverをインストールする
  2. SSHサービスの状態を確認する
  3. サーバーのIPアドレスを確認する
  4. 別のパソコンからSSHで接続する
  5. 必要に応じて公開鍵認証を設定する

初めて試す場合は、同じ家庭内LANや検証用ネットワークにあるLinuxへ接続するところから始めましょう。

SSHとは?

SSHは、Secure Shellの略です。ネットワークを通して別のコンピューターへログインし、コマンドを実行するためのプロトコルです。

SSHによる通信は暗号化されるため、認証情報や通信内容を保護しながらサーバーを操作できます。

SSHは、主に次のような場面で使われます。

  • Linuxサーバーを遠隔操作する
  • AWSのEC2へ接続する
  • ルーターやスイッチを設定する
  • scpsftpでファイルを転送する
  • Gitサーバーへ公開鍵を使って接続する

SSHは、クライアントとサーバーに分かれています。接続する側のパソコンではSSHクライアントを使用し、接続される側のLinuxではSSHサーバーを動かします。

OpenSSHでは、クライアントコマンドがssh、サーバープロセスがsshdです。

UbuntuへOpenSSH Serverをインストールする

今回は、UbuntuまたはDebian系Linuxを例に進めます。

最初にパッケージ一覧を更新します。

sudo apt update

続いて、OpenSSH Serverをインストールします。

sudo apt install openssh-server

確認を求められた場合は、内容を確認してYを入力します。

sshインストール

接続する側でSSHクライアントだけを利用したい場合は、次のパッケージです。

sudo apt install openssh-client

サーバーとして接続を受け付けるには、openssh-serverが必要です。似た名前なので注意しましょう。

SSHサービスの状態を確認する

インストール後は、SSHサービスが起動しているか確認します。

sudo systemctl status ssh

active (running)と表示されていれば、SSHサーバーは動作しています。

起動していない場合は、次のコマンドを実行します。

sudo systemctl start ssh

OSの起動時にSSHも自動起動させる場合は、次のコマンドです。

sudo systemctl enable ssh

待ち受けているポートを確認する場合は、次のように実行できます。

sudo ss -tlnp | grep ':22'

SSHでは、標準でTCPの22番ポートを使用します。

サーバーのIPアドレスを確認する

別のパソコンから接続するには、SSHサーバーのIPアドレスが必要です。

ip address

短い形式では、次のコマンドも使えます。

hostname -I

たとえば、192.168.1.50と表示された場合は、そのアドレスを接続先として使用します。

仮想マシンへ接続する場合は、VirtualBoxやVMwareのネットワーク方式にも注意してください。NATだけではホスト側から直接接続できない構成もあります。

SSHの設定ファイルを確認する

SSHサーバーの主な設定ファイルは、次の場所にあります。

/etc/ssh/sshd_config

クライアント側のssh_configと名前が似ていますが、サーバー側はsshd_configです。

Ubuntuでは、次のディレクトリへ設定ファイルを追加する方法もあります。

/etc/ssh/sshd_config.d/

設定を変更する前に、バックアップを作成しておきましょう。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

編集する場合は、viなどを使用します。

sudo vi /etc/ssh/sshd_config

初心者が確認しておきたい主な設定は次のとおりです。

Port 22
PubkeyAuthentication yes
PasswordAuthentication yes
PermitRootLogin no

ディストリビューションやバージョンによって初期値は異なります。コメントアウトされている項目でも、内部の標準値が適用される場合があります。

インターネットへ公開するサーバーでは、公開鍵認証を利用し、rootでの直接ログインを許可しない構成が基本です。

設定を変更したら構文を確認する

sshd_configを編集した後は、設定ファイルに誤りがないか確認します。

sudo sshd -t

何も表示されなければ、基本的には構文エラーがありません。

問題がなければ、SSHサービスを再起動します。

sudo systemctl restart ssh

リモート接続中に設定を変更する場合は注意してください。設定を間違えると、再接続できなくなる可能性があります。

現在の接続を残したまま別のターミナルから接続を試し、正常にログインできることを確認してから作業を終了すると安全です。

WindowsからSSH接続する方法

現在のWindows 10やWindows 11では、OpenSSHクライアントを利用できます。

PowerShellまたはWindows Terminalを開き、次の形式で実行します。

ssh ユーザー名@IPアドレス

たとえば、ユーザー名がryu、サーバーのIPアドレスが192.168.1.50の場合は次のとおりです。

ssh ryu@192.168.1.50

初回接続時には、接続先のホスト鍵を信頼するか確認されます。接続先が正しいことを確認し、問題がなければyesと入力します。

その後、Linuxユーザーのパスワードを入力します。パスワードは画面に表示されませんが、そのまま入力してEnterを押してください。

Tera Termから接続する

GUIで操作したい場合は、Tera TermなどのSSHクライアントも利用できます。

Tera Termを起動し、ホスト欄へサーバーのIPアドレスを入力します。サービスはSSHを選び、TCPポートは通常22番を指定します。

ssh接続説明

初回接続時は、サーバーのホスト鍵に関する警告が表示されます。

ssh接続2

接続先が正しいことを確認したうえで続行し、Linuxのユーザー名とパスワードを入力します。

ssh接続時のユーザ認証

現在はPowerShellやWindows Terminalのsshコマンドでも接続できるため、使いやすい方法を選びましょう。

macOS・LinuxからSSH接続する方法

macOSやLinuxでも、ターミナルから同じ形式で接続できます。

ssh ユーザー名@IPアドレス

SSHのポート番号を22番以外へ変更している場合は、-pオプションを使用します。

ssh -p 2222 ryu@192.168.1.50

接続後は、次のコマンドで現在のユーザー名やホスト名を確認できます。

whoami
hostname

複数のサーバーへ接続するときは、コマンドを実行する前にホスト名やプロンプトを確認しましょう。

公開鍵認証を設定する

実際のサーバー運用では、公開鍵認証がよく使われます。

接続元のパソコンで鍵ペアを作成します。

ssh-keygen -t ed25519

秘密鍵と公開鍵が作成されます。秘密鍵は他人へ渡さず、安全に管理してください。

LinuxやmacOSでは、次のコマンドで公開鍵をサーバーへ登録できます。

ssh-copy-id ryu@192.168.1.50

登録後、SSHで接続できることを確認します。

ssh ryu@192.168.1.50

公開鍵認証で接続できることを確認してから、必要に応じてパスワード認証を無効化します。

PasswordAuthentication no
PermitRootLogin no

設定後は、sudo sshd -tで確認してからSSHサービスを再起動してください。

SSHで接続できない場合の確認方法

SSHで接続できない場合は、表示されたエラーごとに原因を切り分けます。

Connection refused

SSHサービスが動いていない、または指定したポートで待ち受けていない可能性があります。

sudo systemctl status ssh
sudo ss -tlnp | grep ':22'

Connection timed out

IPアドレスが間違っている、通信経路がない、ファイアウォールやクラウドのセキュリティグループで遮断されている可能性があります。

Permission denied

ユーザー名、パスワード、秘密鍵、公開鍵の登録内容など、認証に問題がある可能性があります。

サーバー側のログは、次のコマンドで確認できます。

sudo journalctl -u ssh

リアルタイムで確認する場合は次のとおりです。

sudo journalctl -fu ssh

ネットワークの問題と認証の問題を分けて調査することが重要です。

SSHを実際に操作しながら学ぶ

SSHは、コマンドを読むだけでなく、サーバーを構築して接続することで理解しやすくなります。

InfraAcademyのLinux入門講座では、Linuxコマンド、ユーザー管理、権限、サービス、ログ、SSHなどをブラウザ上の環境で実践しながら学習できます。

SSH通信に必要なIPアドレス、ポート番号、ルーティング、ファイアウォールなどを学びたい方は、ネットワーク入門講座もおすすめです。

また、SSHを使ってEC2へ接続し、クラウド上にLinuxサーバーを構築したい方は、AWS講座へ進むと、Linuxとネットワークの知識をAWS環境へつなげられます。

SSHの設定方法まとめ

今回は、LinuxへSSHでリモート接続する方法を解説しました。

  • Ubuntuではopenssh-serverをインストールする
  • systemctl status sshでサービスの状態を確認する
  • サーバー側の設定ファイルは/etc/ssh/sshd_config
  • 設定変更後はsshd -tで構文を確認する
  • Windows、macOS、Linuxからssh ユーザー名@IPアドレスで接続できる
  • 実際の運用では公開鍵認証を利用し、rootログインを制限する
  • 接続できない場合は、サービス、ポート、ネットワーク、認証を確認する

まずは検証用のLinuxへOpenSSH Serverをインストールし、同じLAN内のパソコンから接続してみましょう。

自分でSSHサーバーを起動し、接続エラーも確認することで、Linuxのリモート管理とネットワーク通信の仕組みを実践的に理解できるようになります。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る