LinuxにおけるSSHの設定と使用方法

Ssh On Ubuntu Feature

Linuxをしばらく使っている場合は、SSHというツールについて耳にしたことがあるでしょう。SSH(Secure Shell)は、クライアントとリモートサーバー間で安全な接続を確立するためのネットワークプロトコルです。これは、ユーザーがネットワーク越しにさまざまなコンピュータに安全にリモートログインできるように設計されています。ここでは、SSHキーをサーバーに簡単に設定してコピーする方法を紹介します。

関連情報: LinuxでのすべてのアクティブなSSH接続を表示する方法

SSHのインストール

最初にSSHサーバーをインストールする必要があります。Software Centerやパッケージマネージャでopenssh-serverパッケージを見つけてインストールできます。あるいは、サーバー上にいる場合(またはターミナルを使用するのが好きな場合)は、ターミナルを開いて以下のコマンドを入力します。

# Ubuntu/Debian  
sudo apt install openssh-server  
  
# Fedora/CentOS/REHL  
sudo dnf install openssh-server

Ssh On Ubuntu Installing

関連情報: Linuxサーバーでハッカーを捕まえるためのSSHハニーポットの作成方法

LinuxでのSSHの有効化

OpenSSHサーバーがマシンにインストールされたら、systemdユニットを起動して有効にする必要があります。そのためには、ターミナルに以下のコマンドを入力するだけで済みます。

sudo systemctl enable --now ssh

Ssh On Ubuntu Enabling

知っておくべきこと: LinuxではSSHパイプを使用してプログラムを接続できます。

SSHキーの生成

opensshサーバーをインストールしたら、SSHキーのペアを生成できます。進む前に、既存のキー ペアがないことを確認してください。このプロセスは既存のものを上書きします。

既存のキー ペアがあるかどうかを確認するには、次のコマンドを使用します。

ls -la ~/.ssh

既存のキー ペアがある場合、上記のコマンドは「id_rsa」と「id_rsa.pub」ファイルを表示するはずです。

Ls La Ssh

既存のSSHキー ペアがないことを確認したら、新しいものを生成できます。そうでない場合、古いキーをバックアップしておき、失うのを避けましょう。

新しいキーを生成するには、次のコマンドを使用します。

ssh-keygen -t rsa -b 4096

上記のコマンドは、ssh-keygenユーティリティを呼び出して、インタラクティブにSSHキー ペアを生成します。-tオプションを使用して、生成するキーのタイプを指定します。この場合、RSAキーを生成します。

また、-bオプションを使用して、キーのビット数を指定します。RSAキーを使用する場合、最小ビットサイズは1024です。指定されていない場合、3072ビットでキーが生成されます。

Ssh Keygen Rsa

SSHキーの保存にはデフォルトの場所を使用すると、SSH接続時にパスを入力しなくて済むので便利です。

キーをパスフレーズで暗号化したくない場合は、Enterを押してスキップしてください。

リモートサーバーへのキーのコピー

新しいSSHキー ペアを生成したので、管理したいリモートマシンにアップロードする必要があります。

これを行う最も効率的な方法は、ssh-copy-idコマンドを使用することです。このコマンドを次のように入力します。

ssh-copy-id remote_user@remote_IP

別のファイル名でキー ファイルを使用している場合、以下のコマンドを使用してキー ファイルへのパスを指定できます。

ssh-copy-id -i ~/.ssh/id_rsa remote_user@remote_IP

リモートマシンに初めてログインする場合は、フィンガープリントを受け入れる必要があります。

次に、リモートユーザーのSSHパスワードを入力します。

認証が成功すると、ssh-copy-idコマンドはサーバー上の「~/.ssh/authorized_keys」ファイルにid_rsa.pubキーの内容を追加し、接続を閉じます。

Ssh Copy Id

リモートマシンへのログイン

すべてのステップを正常に完了したら、パスワードを入力せずにリモートサーバーにログインできます。

これをテストするには、次のコマンドを使用します。

ssh remote_user@remote_ip

キーにパスフレーズが設定されていない限り、自動的にログインされます。

よくある質問

1. SSHは安全ですか?

SSHは、認証されたユーザーがリモートシステムにログインすることを許可する強力なセキュリティツールです。ただし、設定ファイルの許可がある限り、その安全性は保証されます。未設定または誤設定されたSSHサーバーは、ハッカーや第三者のアクセスに脆弱となる可能性があります。インストール後は、SSHの設定を確実に保護してください。

2. SSHのauthorized_keysファイルはどこにありますか?

SSHのauthorized_keysファイルは、各ユーザーの公開キーファイルを保持し、どのユーザーがサーバーにログインできるかを指定します。Linuxでは、authorized_keysファイルは通常、ユーザーのホームディレクトリ内の「.ssh」フォルダーにあります。

3. ssh-copy-idのパーミッション拒否の問題をどのように修正できますか?

これは、すでにリモートサーバーに公開キーを設定し、パスワード認証を無効にしている場合にのみ発生します。この問題を修正するには、最初にサーバーにログインし、/etc/ssh/sshd_configファイルでパスワード認証を有効にしてから、再度ssh-copy-idコマンドを実行します。

新しいキー ファイルをコピーした後は、再度パスワード認証オプションを無効にすることを忘れないでください。