Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

LinuxでSSHパスワードレスログインを設定する方法【3つの簡単なステップ】

SSH(Secure Shell)は、リモートサーバーにログインしてコマンドやプログラムを実行するために広く使われているオープンソースのネットワークプロトコルです。また、SCP(Secure Copy)コマンドやrsyncコマンドを使って、ネットワーク経由で安全にファイルを転送する目的でも利用されています。

本記事では、CentOSFedoraRocky LinuxAlmaLinuxなどのRHEL系ディストリビューション、およびUbuntuMintなどのDebian系ディストリビューションにおいて、SSH鍵認証を使用してパスワード入力なしでリモートのLinuxサーバーに接続できるようにする手順を解説します。

SSH鍵によるパスワードレスログインを設定すると、2台のLinuxサーバー間の信頼性が高まり、ファイルの同期や転送がスムーズになります。特に複数のリモートサーバーを管理している場合、スクリプトによる自動バックアップ、SCPコマンドを使ったファイル同期、リモートでのコマンド実行といったタスクの自動化に非常に有効な手段となります。

検証環境

今回の例では、以下のような環境を想定しています。

SSHクライアント : 192.168.0.12(Fedora 34)
SSHリモートホスト : 192.168.0.11(CentOS 8)

この環境で、サーバー192.168.0.12のユーザーtecmintから、サーバー192.168.0.11のユーザーsheenaへ、パスワードなしで自動ログインできるように設定していきます。

ステップ1:認証用SSHキーペアの作成(192.168.0.12)

まず、サーバー192.168.0.12にユーザーtecmintとしてログインし、以下のコマンドで公開鍵と秘密鍵のペアを生成します。

$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/tecmint/.ssh/id_rsa): [Enterキーを押す]
Created directory '/home/tecmint/.ssh'.
Enter passphrase (empty for no passphrase): [Enterキーを押す]
Enter same passphrase again: [Enterキーを押す]
Your identification has been saved in /home/tecmint/.ssh/id_rsa.
Your public key has been saved in /home/tecmint/.ssh/id_rsa.pub.
The key fingerprint is:
5f:ad:40:00:8a:d1:9b:99:b3:b0:f8:08:99:c3:ed:d3 admin@wsxdn.com
The key's randomart image is:
+--[ RSA 2048]----+
|        ..oooE.++|
|         o. o.o  |
|          ..   . |
|         o  . . o|
|        S .  . + |
|       . .    . o|
|      . o o    ..|
|       + +       |
|        +.       |
+-----------------+

すべての項目でそのままEnterキーを押せば、パスフレーズなしの鍵ペアがデフォルトの場所(~/.ssh/id_rsa~/.ssh/id_rsa.pub)に生成されます。より高いセキュリティが必要な場合は、パスフレーズを設定することも可能です。

ステップ2:SSH公開鍵のアップロード(192.168.0.11へ)

次に、サーバー192.168.0.12からssh-copy-idコマンドを使って、新しく生成した公開鍵(id_rsa.pub)を、サーバー192.168.0.11上のユーザーsheena.sshディレクトリ内にあるauthorized_keysファイルとして登録します。

$ ssh-copy-id sheena@192.168.0.11

このコマンドを実行すると、初回のみリモートユーザーのパスワード入力を求められます。正しく登録されると、以降はパスワードなしでログインできるようになります。ssh-copy-idが利用できない環境では、公開鍵の内容を手動でauthorized_keysに追記しても同じ結果が得られます。

ステップ3:パスワードレスログインのテスト(192.168.0.12から)

ここまでの設定が完了すれば、サーバー192.168.0.12のユーザーtecmintから、サーバー192.168.0.11のユーザーsheenaとして、パスワードを入力することなくログインできます。

$ ssh sheena@192.168.0.11

パスワードを求められずにそのままログインできれば、設定は成功です。もしパスワードを求められる場合は、リモート側の~/.sshディレクトリのパーミッション(700)authorized_keysのパーミッション(600)が適切かどうかを確認してください。

まとめ

本記事では、SSH鍵認証を使ったパスワードレスログインの設定方法を、鍵の生成から公開鍵の登録、動作確認までの3つのステップで解説しました。手順自体はシンプルですが、サーバー管理の自動化やセキュリティ向上に大きく役立つ基本的な技術です。ぜひ実際の環境で試してみてください。ご不明な点があれば、コメント欄でお気軽にお尋ねください。

  1. Linuxでプロセスを強制終了する方法!top・ps・killコマンドの使い方を徹底解説

    Linuxには、プロセスを強制終了(キル)するためのさまざまな方法があります。このチュートリアルでは、動作がおかしくなったプロセスを見つけて終了させる方法を解説します。 プロセスは簡単に「孤児」になってしまうことがあります。意図的であろうとなかろうと、親プロセスがクラッシュすると、子プロセスだけが取り残されて実行され続けることがあります。また、親プロセスが完了した子プロセスを回収(reap)できず、ゾンビプロセスになってしまうケースもあります。 どちらの状態のプロセスも放置されたままでは動けず、手動での介入が必要です。そこで登場するのがジョブコントロールです。それでは、壊れたプロセスを終了させ

  2. Linuxでディレクトリ名を変更する方法:mvとrenameコマンドの使い方

    このチュートリアルでは、Linuxでディレクトリ名を変更する方法として、「mv」コマンドと「rename」コマンドの2つの使い方を解説します。 ディレクトリ名の変更は、ファイル名の変更とほとんど変わりません。Linuxには「すべてはファイルである」という設計思想があり、ディレクトリも例外なくファイルとして扱われます。そのため、ファイルのリネームで使うテクニックの多くが、そのままディレクトリにも応用できます。 mvコマンドでディレクトリ名を変更する mv RenameDir/ renameDir mvコマンドによるディレクトリ名の変更 方法はこれだけです。シンプルにmvするだけで完了します。ただ