技術空間

Linux

SSHを使ってパスワードなしでログインする方法


TOP > Linux > SSHを使ってパスワードなしでログインする方法



■SSHを使ってパスワードなしでログインする方法

sshを使ってパスワードなしでログインするためには、以下の作業を実施する。

①ssh-keygenコマンドで鍵ペア(秘密鍵と公開鍵)の作成
②公開鍵を相手サーバのauthorized_keysへ登録

イメージ的には、秘密鍵を自分だけで管理し、公開鍵を接続したいサーバへ配布する感じ。

まずは①の鍵ペア作成を実施。ssh-keygenコマンドで作成する。 tオプションで鍵の暗号化形式を指定。rsa、dsa、ecdsa、ed25519などが指定可能(デフォルトはrsa)。 bオプションは鍵のビット数を指定する。省略すると2048ビットとなる(4096の方が強度は高い)。

暗号化方式RSA、鍵の長さ4096ビットの場合
ssh-keygen -t rsa -b 4096
実際の作成例
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hogehoge/.ssh/id_rsa): <- 鍵の出力場所を入力
Enter passphrase (empty for no passphrase): <- パスフレーズを入力
Enter same passphrase again: <- 再度パスフレーズを入力
Your identification has been saved in /home/hogehoge/.ssh/id_rsa. <- 作成される秘密鍵
Your public key has been saved in /home/hogehoge/.ssh/id_rsa.pub. <- 作成される公開鍵
The key fingerprint is:
SHA256:VVZ3kq/Dpb3+763dkOgnC8Pz4vzFkooE6urTQSAkGd0 hogehoge@amateras <- フィンガープリント(公開鍵のハッシュ値)
The key's randomart image is:
+---[RSA 4096]----+
|o=..      .S+o.  |
|..o +     .+.    |
|   . .    ..     |
|      .  .  .    |
|     .  So o     |
| .    + . E .. . |
|  =  . = . +++o  |
| ..=. . . ..+ ooo|
| .ooB+oo.. ..+S**|
+----[SHA256]-----+

鍵の出力場所は、{homeディレクトリ}/.ssh配下が一般的なので、特別な理由がない限り変更不要。その場合、何も入力せずEnterを押す。

パスフレーズは接続の際に求められるパスワードのようなもの。不要な場合は、何も入力せずEnter。 パスフレーズを入力した場合、接続する毎にパスフレーズの入力が必要になってくるが、ssh-agentに登録すれば、ssh-agentが起動している限り、初回の1回のみでよくなる。

.ssh配下へ移動し、公開鍵と秘密鍵が生成されているか確認

$ ls -al ~/.ssh
total 24
drwxr-xr-x 1 hogehoge hogehoge    0  2月 18 21:20 ./
drwxr-xr-x 1 hogehoge hogehoge    0  2月 15 22:28 ../
-rw-r--r-- 1 hogehoge hogehoge 3434  2月 18 21:20 id_rsa <- 秘密鍵
-rw-r--r-- 1 hogehoge hogehoge  745  2月 18 21:20 id_rsa.pub <- 公開鍵

次に公開鍵を相手サーバ(接続先サーバ)のauthorized_keysへ登録する。 authorized_keysは、{homeディレクトリ}/.ssh配下に存在するので、公開鍵の内容をこのファイルに追記する。追記はviでも可能だが、catで追記するのが一般的かつ安全。 但し、catの場合、公開鍵(id_rsa.pub)を相手サーバへ転送しておく必要がある。※authorized_keysをアップデートする前に必ずバックアップをとっておくこと。

相手サーバにコピーした公開鍵をauthorized_keysへ登録
$ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

authorized_keysが存在しない場合は、転送した公開鍵(id_rsa.pub)をそのままリネームしてあげればよい。

$ mv /tmp/id_rsa.pub ~/.ssh/authorized_keys

最後にsshで接続確認をして完了。



TOP > Linux > SSHを使ってパスワードなしでログインする方法

Tweet ̃Gg[͂ĂȃubN}[Nɒlj
技術空間