Skip to main content

パスワードなしでSSH接続する方法

この記事では、パスワードを入力せずにリモートサーバへSSH接続するための設置を説明します。

SSH接続のパスワード認証は手間

リモートサーバにSSH接続する際、以下のようにパスワードが求められることがあるかと思います。

bash
ssh xx.xx.xx.xx
user@xx.xx.xx.xx's password:

頻繁にSSH接続をする際、毎回このパスワード認証を行うのは手間だと感じたことがあるのではないでしょうか? このパスワード認証は、クライアント側で作成した公開鍵をリモートサーバに登録することでスキップすることができ、以下でその方法を説明します。

設定方法

クライアント側でキーペアを作成・リモートサーバに登録し、パスワード認証を回避する方法を説明します。手順は大まかに以下の通りです。

  1. クライアント側で、公開鍵/秘密鍵のペアを作成する。
  2. 秘密鍵のアクセス権限を変更する。
  3. リモートサーバに登録する。
  4. .ssh/configを修正する
  5. 動作確認

1. クライアント側で、公開鍵/秘密鍵のペアを作成する。

クライアントマシンで以下のコマンドを実行し、公開鍵/秘密鍵のペアを作成しましょう。

ssh-keygen

細かい設定は必要に応じてでOKです。(よくわからなければ[Enter]連打でOKです。) ↑の処理後、~/.ssh配下に以下のファイルが作成されます。

  • id_rsa: 秘密鍵
  • id_rsa.pub: 公開鍵

2. 秘密鍵のアクセス権限を変更する。

以下のコマンドを実行し、秘密鍵のアクセス権限を変更します。

chmod 600 ~/.ssh/id_rsa

3. リモートサーバに登録する。

以下のコマンドを実行し、公開鍵をリモートサーバに登録します。

ssh-copy-id -i ~/.ssh/id_rsa.pub [リモートサーバのユーザ名]@[リモートサーバのホスト名]

4. .ssh/configの設定

~/.ssh/configを以下のように編集します。

~/.ssh/config
Host hogehoge                   # 接続ラベル(任意の文字列)
Hostname xxx.xxx.xxx.xxx # リモートサーバのホスト名
User ubuntu # リモートサーバのユーザ名
Port 22 # 接続に利用するポート番号
IdentityFile ~/.ssh/id_rsa # 秘密鍵のパス

5. 動作確認

以下のようにssh接続するとパスワードを求められず、接続できることを確認できると思います。

# ssh <接続ラベル>
ssh hogehoge

参考文献