SSHのセットアップ、ネットワーク診断にping
、netstat
、dig
を使う
1. SSHサーバーの設定
Linuxのネットワーク機能への実践的な没入へようこそ。今日は自分たちの知識を試す時が来た!SSHサーバーを設定してクライアントを使って接続したり、一番人気のあるコマンドでネットワークを診断したり、ポートのアクセス性を確認したりする方法を学びます。本物のネットワークエンジニアになった気分になりましょう!
SSH (Secure Shell) は、サーバーへの安全なリモートアクセスのためのツールです。サーバーに接続し、まるでその前に座っているかのように操作したり、ファイルを転送したりすることができます。
ステップ 1: SSHサーバーをインストールする
まず、SSHサーバーをインストールしましょう。UbuntuまたはDebianを使っている場合は、次のコマンドを実行してください:
sudo apt update
sudo apt install openssh-server -y
FedoraまたはCentOSの場合:
sudo yum install -y openssh-server
インストール後、SSHサービスが開始されていることを確認してください:
sudo systemctl start ssh
sudo systemctl enable ssh # システム起動時にSSHが自動的に起動するように設定
sudo systemctl status ssh # サービスの状態を確認
すべてが正しく動作していれば、サービスが動いていることがわかります。
ステップ 2: SSHサーバーの設定
SSHサーバーの設定ファイルは次のパスにあります:
sudo nano /etc/ssh/sshd_config
いくつかの便利なパラメーター:
PermitRootLogin no
—root
ユーザーでのログインを禁止。PasswordAuthentication yes
— パスワード認証を有効にする。PubkeyAuthentication yes
— 鍵認証を有効にする。
変更を加えた後、SSHを再起動してください:
sudo systemctl restart ssh
これでサーバーは接続を受け入れる準備が整いました。
ステップ 3: SSHを使ってサーバーに接続する
別のマシン(またはローカルマシンからlocalhost経由)から接続を試してください:
ssh your_username@your_server_ip
ローカルで作業している場合は、your_server_ip
を 127.0.0.1
に置き換えてください。ユーザーのパスワードを入力すると、ターミナルからシステム内に入ることができます。
2. 鍵による認証の設定
パスワード認証は便利だけど、セキュリティの観点からはSSHキーを使う方がベストだよ。
ステップ1: SSHキーの生成
クライアントマシンで次のコマンドを実行してね:
ssh-keygen
キーの保存先を聞かれるよ。デフォルトでは~/.ssh/
ディレクトリに保存される。Enterキーを押すだけでOK。
ステップ2: サーバーにキーをコピーする
公開鍵をサーバーにコピーしよう:
ssh-copy-id your_username@your_server_ip
これでパスワードを入力せずに接続できるようになるよ:
ssh your_username@your_server_ip
全部正しく設定できてたら、おめでとう!これでSSHサーバーが鍵認証で保護されたよ。
3. ping
を使ったネットワーク診断
このコマンドにはすでに慣れてると思うよ。もう一回SSHサーバーへの接続性をサクッと確認しよう。
ping -c 4 your_server_ip
サーバーからの応答が見えるはずだよ。もし応答がなければ、サーバーが起動してるか、設定が正しいか確認してみて。
4. nslookup
とdig
を使ったDNSの確認
サーバーにドメイン名がある場合、DNS経由でその動作を確認できます。例えば:
nslookup
コマンド:
nslookup your-domain.com
ドメインに対応するIPアドレスが表示されるはずです。
dig
コマンド:
次に、完全な情報セットを取得してみましょう:
dig your-domain.com
多くのデータが表示されますが、私たちが興味を持つのはANSWER SECTION
の行で、そこにIPアドレスが記載されています。
5. netstat
とss
を使ったネットワーク接続の分析
SSHサーバーはデフォルトでポート22をリッスンしています。これをnetstat
で確認してみましょう:
sudo netstat -tln | grep 22
または、よりモダンなツールであるss
を使って確認することもできます:
sudo ss -tln | grep 22
ポート22が"LISTEN"(接続待ち)状態であれば、サーバーはクライアントを受け入れる準備ができています。
6. nc
を使用してポートの可用性を確認する
netcat
(または nc
) コマンドを使用してポートの可用性をテストできます。SSHサーバーに接続を試みてみましょう:
nc -zv your_server_ip 22
"Connection to your_server_ip 22 port [tcp/ssh] succeeded!"
のようなメッセージが表示されるはずです。
接続に失敗した場合、ファイアウォールによってポートがブロックされているか、またはサーバーが指定されたポートでリスニングしていない可能性があります。
7. 実践課題
では、すべてを1つの実践シナリオにまとめてみよう。以下を実行する必要があります:
- 自分のマシンまたはWSL2などの仮想環境でSSHを有効にする。
- 鍵を生成し、鍵による認証を設定する(パスワードを禁止する)。
- SSHを使ってサーバーに接続する。
ping
を使ってサーバーの接続可能性を確認する。nslookup
やdig
を使ってIPアドレスの解決を確認する(ドメイン名がある場合)。netstat
、ss
、nc
を使ってサーバーのポート22を確認する。
これで、リモートアクセスを設定するだけでなく、ネットワークの問題を解決し、サーバーを診断し、プロのように保護する準備が整いました!Linuxの達人と呼ばれるまで、着実に進んでいますよ。
GO TO FULL VERSION