注意
環境はMacOSです。
また、以下ではクライアントとリモートサーバーという言葉を次のような意味で用います。
- クライアント...接続元のサーバー(あなたの使ってるPC)
- リモートサーバー...接続先のサーバー
手順
この記事では以下の手順で公開鍵認証を使ってリモートサーバーにSSH接続する方法を説明します。また、上手くいかない時は一番下の補足を参照ください。
-
ssh-keygen
コマンドを使ってクライアント側で秘密鍵と公開鍵を生成する。 -
ssh-copy-id
コマンドを使ってクライアント側で生成した公開鍵をリモートサーバーに登録する。
秘密鍵と公開鍵の生成
クライアント側でターミナルを開き、以下のコマンドを実行します。
ssh-keygen
すると、どこに鍵を保存するかを聞かれます。そのままエンターを押すと()内に記載され場所に保存されます。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/{ユーザー名}/.ssh/id_rsa):
次に以下のようなメッセージが出ます。これは秘密鍵自体にパスフレーズ(パスワード)を設定するか聞いています。そのままエンターを押すとパスフレーズ無しで設定されます。
Enter passphrase (empty for no passphrase):
次に以下のメッセージが出ますが、これは設定したパスフレーズの確認ですのでもう一度同じパスフレーズを入力してください。
Enter same passphrase again:
これで秘密鍵と公開鍵の生成は完了しました。id_rsa
が秘密鍵でid_rsa.pub
が公開鍵です。保存したディレクトリに移動して確認してください。
公開鍵をリモートサーバーに登録する
先ほどクライアント側で生成したid_rsa.pub
の内容をリモートサーバーの.ssh/authorized_keys
に追記する必要があるのですが、以下のコマンドをクライアント側で叩くだけでそれができてしまいます。
ssh-copy-id {ユーザー名}@{リモートサーバーのホスト名}
接続できるか確認
SSH接続ができるか確認してみます。以下のコマンドを叩きパスワードを聞かれずに接続できれば成功です(秘密鍵にパスフレーズを設定した人はその入力をする必要があります)。
ssh {ユーザー名}@{リモートサーバーのホスト名}
補足
うまくいかない時はこちらを参照ください。
ssh-copy-id
ができない
以下のコマンドではデフォルトで.ssh/id_rsa.pub
を探しにいきます。
ssh-copy-id {ユーザー名}@{リモートサーバーのホスト名}
以下のようにオプション-i
を付けてファイルを指定する方が確実です。
ssh-copy-id -i {公開鍵までのパス} {ユーザー名}@{リモートサーバーのホスト名}
ssh接続ができない or パスワードを聞かれる
こちらも同様以下のコマンドではデフォルトで.ssh/id_rsa
を探しにいきます。
ssh {ユーザー名}@{リモートサーバーのホスト名}
以下のようにオプション-i
を付けてファイルを指定する方が確実です。
ssh -i {秘密鍵までのパス} {ユーザー名}@{リモートサーバーのホスト名}