(Linux) sshログインをパスワードなしにする方法

(Linux) sshログインをパスワードなしにする方法

 

サーバにsshログインする際に、通常ログインユーザのパスワードの入力を求められるが、
本記事では、sshログインのパスワード入力をなしにする方法を紹介する。

 

sshログインのパスワードをなしにする方法

先に、sshログインのパスワードをなしにする方法の仕組みを説明してしまおう。

どう言うことをするかと言うと、
パスワードが必要ない公開鍵をログイン先サーバに登録する。
そうすることで、sshログイン毎に聞かれるパスワードの入力を省略することが可能となる。

sshログインのパスワードなしの画像

 

本記事では上記の状態を構築する手順を紹介する。

sshログインのパスワードをなしにする具体的な手順は以下となる

sshログインのパスワードをなしにする方法
  1. sshログイン用の鍵を作成する
  2. 公開鍵(.pub)をログイン先サーバへ転送・登録する
  3. 公開鍵が正しく登録されたことを確認する

 

では、上記手順を順番に解説していく。

 

①sshログイン用の鍵を作成する

手順①では、sshログインに使用する鍵を作成する。
具体的には、秘密鍵と公開鍵(パスワードなし)の二つの鍵を作成する。

 

まずは、ssh-keygenコマンドで、sshログインに必要な秘密鍵と公開鍵を作成する。
以下のコマンドをローカルで実行する。

# sshログイン用の鍵を作成(※ローカルで実行!)

ssh-keygen -t rsa

 

上記コマンドを実行すると「鍵をどこに保存する?」と聞かれる。
デフォルトの場所に保存してOKなので、特に何も考えず「enter」を押す

ssh-keygenコマンドで秘密鍵と公開鍵を作成する画像

 

次に、sshログインの際に聞かれるパスワードの入力を求められる。
「パスワードはなし」の状態にしたいので、ここでは何も押さず「enter」を二回押す。

ssh-keygenコマンドで秘密鍵と公開鍵を作成する画像2

 

すると秘密鍵と公開鍵が作成される。
下記コマンドで確認してみる

ls -l ~/.ssh/

#実行結果
id_rsa         秘密鍵
id_rsa.pub     公開鍵

 

id_rsa(秘密鍵)と、id_rsa.pub(公開鍵)が作成されているはずだ。
以上でsshログインに必要な鍵の作成作業は完了。

ちなみに、両者の鍵は間違えると大変なので、覚えておこう。

 

 

②公開鍵(.pub)をログイン先サーバへ転送・登録する

sshログイン用の鍵の作成が完了したら、手順②では、
作成した公開鍵をログイン先サーバに転送・登録すると言う作業を行う。

 

ssh-copy-idコマンドで、作成した公開鍵をログイン先サーバに転送・登録する。
これもローカルで実行する。

# 公開鍵をリモートサーバに転送・登録する(※ローカルで実行!)

ssh-copy-id -i ~/.ssh/id_rsa.pub ログインユーザ名@ホスト名

 

登録が完了すると以下のような文言が表示される。ssh-keygenコマンドで秘密鍵と公開鍵を作成する画像2

「1個の鍵が登録されました。マシンに(記載されている)sshコマンドでログインしてみてください」と書いてある。

なので記載されているsshコマンドでログインできるか確認してみる。

ssh ユーザ名@ホスト名

この時、上記sshログインコマンド実行時に、
パスワードなしでsshログインできたら成功。

 

 

③公開鍵が正しく登録されたことを確認する

ここからの作業は必須ではないが、念のため紹介しておく。

以下は、ssh-keygenコマンドで登録された、サーバ側の公開鍵の確認方法だ。
もちろん、これはログイン先のサーバで実行する。

# 公開鍵が登録されているディレクトリへ移動
cd ~/.ssh

# 公開鍵情報ファイルを確認
ls -l authotized_keys
ssh-keygenコマンドで秘密鍵と公開鍵を作成する画像3

 

authorized_keysと言うファイルに、登録された公開鍵が溜まっていき、
sshログイン時、ユーザ認証より先に公開鍵認証が成立するか判断する
と言う動きをしているらしい。

権限は600が好ましく、最初から600になっていたので問題なかった。

 

おまけ:関連記事

筆者がそもそも、sshログインをパスワードなしにする方法を調べるに至った経緯として、
Jenkinsを使用してソースの自動デプロイを行うのに、上記手順が必要だったからだ。

Jenkinsを使用してソースの自動デプロイを行うようにすると、開発者としてはとてもデプロイ作業が楽になったので、ぜひ、以下の記事も読んでいただきたい。

 

https://webkaru.net/linux/ssh-command/

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です