Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

毎回パスワードを入力せずにリモートサーバーにSSHで接続する方法

Linuxサーバーの管理では、SSHでリモートサーバーに頻繁に接続することが多く、毎回パスワードを入力したり、多数のパスワードを覚えておいたりするのは大きな負担です。そんなときに便利なのが、公開鍵認証を利用した「パスワード不要のSSH接続」です。

この方法なら、ログイン時のパスワード入力が不要になるだけでなく、sshコマンドでリモートサーバー上のコマンドを直接実行できるため、バックアップ取得などの自動化タスクにも活用できます。セキュリティ面でも、パスワード認証よりも安全であるとされており、総当たり攻撃(ブルートフォース攻撃)への耐性も高くなります。

以下では、LinuxまたはUNIX環境を前提として、パスワードなしでリモートサーバーへSSH接続する手順を解説します。作業自体はとてもシンプルです。

ステップ1:公開鍵ペアを作成する

まず、サーバーとの安全な認証に使用する公開鍵・秘密鍵のペアを作成します。Linuxデスクトップ上でターミナルを開き、次のコマンドを実行してください。

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/calvin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/calvin/.ssh/id_rsa.
Your public key has been saved in /home/calvin/.ssh/id_rsa.pub.

このコマンドにより、公開鍵が/home/calvin/.ssh/id_rsa.pubというファイルに保存されます。保存先のファイル名を尋ねられたら、そのままEnterキーを押してデフォルトの候補を選択しましょう。同様に、パスフレーズを求められた場合も、空のままEnterキーを2回押せば問題ありません。

生成された鍵は、ホームディレクトリ内の.sshフォルダに格納されます。このフォルダにはSSH関連の設定ファイルがまとめて保存されています。

ステップ2:公開鍵をリモートサーバーへコピーする

次に、作成した公開鍵を、パスワードなしでログインしたいサーバーへコピーします。scpコマンドを使用します。

# scp ~/.ssh/id_rsa.pub username@remoteserver.com:/home/username/

usernameの部分はリモートサーバーへのログインに使用するユーザー名に、remoteserver.comの部分はサーバーのホスト名またはIPアドレスに置き換えてください。

ssh-copy-idコマンドを使う方法(より簡単)

OpenSSHに付属するssh-copy-idコマンドを使えば、公開鍵のコピーからauthorized_keysへの追記までを1コマンドで完結できます。

# ssh-copy-id username@remoteserver.com

対応している環境では、こちらの方が手間が少なくおすすめです。

ステップ3:サーバー側でauthorized_keysに登録する

scpでコピーした場合は、リモートサーバーにSSHでログインし、公開鍵の内容をSSHの認証設定ファイルに追記します。

# ssh username@remoteserver.com
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys2

続いて、~/.ssh/authorized_keys2ファイルのパーミッションを適切に設定します。

# chmod 644 ~/.ssh/authorized_keys2

必ずしも必須の操作ではありませんが、権限設定が原因で認証が失敗するトラブルは非常によくあるため、正しい権限を設定しておくことをおすすめします。あわせて、~/.sshディレクトリ自体の権限も700(chmod 700 ~/.ssh)にしておくとさらに安心です。

ステップ4:動作を確認する

これで設定は完了です。リモートサーバーへのSSH接続を一度切断し、再度接続してみてください。今度はパスワードを求められずにログインできるはずです。

応用:リモートでコマンドを実行する

パスワードなしで接続できるようになると、さまざまな活用が可能になります。たとえば、次のコマンドを実行すれば、リモートサーバーの稼働時間やディスク使用状況をローカルのターミナルに直接表示できます。

# ssh username@remoteserver.com "uptime; df -h"

また、ファイルの送受信もパスワード入力なしで行えるため、シェルスクリプトと組み合わせれば、毎日リモートサーバーからバックアップファイルを自動的にローカルデスクトップへダウンロードする、といった運用も簡単に実現できます。

パスワード不要のSSH接続は非常に強力な仕組みです。その一方で、秘密鍵(id_rsa)の管理には十分注意してください。秘密鍵ファイルの権限は600に保ち、他者に読み取られないよう、信頼できる端末でのみ使用することをおすすめします。

  1. Macからリモートサーバーやローカルサーバーに接続する方法を徹底解説

    Macをローカルサーバーやリモートサーバーに接続すると、そのサーバー上にあるすべてのファイルにアクセスできるようになります。macOSには標準でサーバー接続機能が搭載されており、特別な設定や制限なしに、Macから任意のサーバーへ接続可能です。接続後は、サーバーが通常のディスクドライブと同じようにFinderに表示され、ファイルの閲覧・編集・削除まで自由に行えます。 サーバーをストレージとしてマウントする方法は複数あります。macOSに組み込まれた標準機能を使う方法のほか、サードパーティ製アプリを利用してサーバーにアクセスすることもできます。この記事では、それぞれの方法をわかりやすく解説します。

  2. Windows 10でパスワード入力を省略してログインする5つの方法

    Windowsのログイン画面では、セキュリティ保護のためにパスワードの入力が求められます。これは非常に有効な仕組みですが、「毎回パスワードを入力するのが面倒」「自宅でしか使わないPCだから省略したい」といった理由から、パスワード入力をスキップしたいと考える方も少なくありません。 そこで本記事では、Windows 10にパスワードなしでログインするための具体的な設定方法を5つご紹介します。パスワード入力を省略できれば、電源投入からデスクトップが表示されるまでの時間を短縮でき、日々の操作がぐっと快適になります。 注意: パスワードを解除すると、第三者にPCを勝手に操作されたり、保存されたデータを盗