hetemlへ公開鍵認証でSSH接続するには

heteml(ヘテムル)は、SSH接続できるレンタルサーバです。ヘテムルのコントロールパネルでSSHアカウントを設定した直後は、パスワード認証だけです。そこで、公開鍵認証でもSSH接続できるようにします。

公開鍵認証を設定したら、パスワード認証はどうなるのかな?

どちらも使えるから安心して

パスワード認証の確認

Just a moment...
Just a moment...

ヘテムルのマニュアルを参考にしながら、パスワード認証でSSH接続できることを確認してください。ヘテムルIDを 1234example、SSHサーバが 1234example-heteml.net なら、次のように実行します。

SSHパスワードを入力します。

$ ssh -p 2222  1234example@1234example-heteml.net
1234example@1234example-heteml.net's password: 

ヘテムルIDの先頭に数字は使えないよ

説明のための架空のヘテムルIDよ

Windows 10

Windows 10では、コマンドプロンプトでsshやssh-keygenを使えるようになりました。

以前はどうしてたの?

PuTTYとPuTTYgenを使ってたわ

PuTTYはどう読むの?

公式には「パティ」らしいけど、
「プッティ」で通じることが多いわね。

キーペア作成

キーペアのファイル数が少なければ %HOME%\.ssh\ 直下に作成してもいいですし、キーペアのファイル数が多ければ、%HOME%\.ssh\ にサブディレクトリを作って、整理してもいいです。

ここでは、id_rsa_heteml、id_rsa_heteml.pub を作成します。

途中で、パスフレーズを入力してください。パスフレーズはパスワードマネージャーなどで管理してください。

> cd
> mkdir .ssh

> cd .ssh

> ssh-keygen -t rsa -f id_rsa_heteml
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

> dir /B
id_rsa_heteml
id_rsa_heteml.pubCode language: Bash (bash)

pub付きが、公開鍵

pub無しが、秘密鍵

ヘテムルに公開鍵をコピー

Windows 10のコマンドプロンプトを起動します。

scpコマンドで、公開鍵をヘテムル側の ~/.ssh/authorized_keysにコピーします。

まず、ヘテムルにパスワード認証でSSHログインして、~/.ssh/authorized_keys を作成します。

> ssh  1234example@ssh-1234example.heteml.net
1234example@1234example-heteml.net's password: 

$Code language: Bash (bash)

.sshディレクトリを作成して、ファイルモードを 700 に設定します。ls -al して、「drwx---r-x」ではなく、「drwx------」 であることを確認します。

$ mkdir .ssh
$ chmod 700 .ssh

$ ls -al
(省略)
drwx------  2 xxxxx HetemlUser 4096 2020-05-07 09:42 .ssh
(省略)Code language: Bash (bash)

.sshディレクトリにcdして、authorized_keysファイルを作ります。ls -l して、「-rw----r--」ではなく、「-rw-------」であることを確認します。

$ cd .ssh
$ touch authorized_keys
$ chmod 600 authorized_keys

$ ls -l
-rw------- 1 xxxxxx HetemlUser   0 2020-05-06 17:35 authorized_keys
Code language: Bash (bash)

ヘテムルからlogoutします。

$ logout

>Code language: Bash (bash)

Windows 10のコマンドプロンプトに戻ってきました。

scpで、id_rsa_heteml.pub を ヘテムル側の .ssh/authorized_keys にコピーします。パスワード認証のパスワードを入力します。

> scp  id_rsa_heteml.pub  1234example@ssh-1234example.heteml.net:~/.ssh/authorized_keys
1234example@1234example-heteml.net's password: Code language: Bash (bash)

公開鍵認証でSSHログインできるはずです。-i オプションには「秘密鍵(pub無し)」を指定します。秘密鍵のパスフレーズを入力してください。

$ ssh  -i id_rsa_heteml  1234example@ssh-1234example.heteml.net
Enter passphrase for key 'C:\Users\aoki.makoto\.ssh\heteml':Code language: Bash (bash)

.ssh/configに登録

SSH接続する機会が多ければ、さきほどのコマンドを入力するのは面倒です。

めったにSSH接続しないのなら、さきほどのコマンドを忘れています。

そこで、%HOME%\.ssh\configに登録しておきます。IdentityFileは、C:\から始まる絶対パスを設定してください。

Host heteml
  # 2020-04-06
  HostName ssh-1234example.heteml.net
  User 1234example
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:\Users\aoki.makoto\.ssh\id_rsa_heteml
  IdentitiesOnly yes
  LogLevel FATALCode language: plaintext (plaintext)

%HOME%\.ssh\configに登録しておくと、SSH接続でHost名を指定するだけでよくなります。Host名を忘れたら、%HOME%\.ssh\config を見ればわかります。

$ ssh heteml
Enter passphrase for key 'C:\Users\aoki.makoto\.ssh\id_rsa_heteml':Code language: Bash (bash)

.ssh/config のことも忘れそうだな

ネットで調べているうちに思い出せるといいわね

ssh-agent

ssh-addを使う前に、ssh-agentを起動しておく必要があります。サービスとして自動起動するので、PC再起動後もssh-agentサービスが自動起動しています。手作業でssh-agentを起動する必要はありません。

管理者モードでコマンドプロンプトを起動してください。

次のコマンドで、ssh-agentを起動してください。

> sc config ssh-agent start=auto

> sc start ssh-agent

管理者モードのコマンドプロンプトを閉じてください。

これまで作業していた通常モードのコマンドプロンプトはいったん閉じて、あらたに通常モードのコマンドプロンプトを起動してください。

ssh-add

パスフレーズの入力も面倒なんだけど

SSHログインするときは、その日のうちに何回もSSHログインするものです。すると、毎回、秘密鍵のパスフレーズを入力するのも面倒になります。

そこで、ssh-addコマンドで、秘密鍵とパスフレーズを登録しておきます。以後、パスフレーズを入力することなく、SSHログインできます。

$ ssh-add %HOME%\.ssh\id_rsa_heteml
Enter passphrase for C:\Users\aoki.makoto\.ssh\id_rsa_heteml: Code language: Bash (bash)

もし次のようなエラーが表示されたら、ssh-agentが起動していません。ssh-agentを起動してください。

$ ssh-add %HOME%\.ssh\id_rsa_heteml
Could not open a connection to your authentication agent.Code language: Bash (bash)

%HOME%.ssh\configを使わない方法で、sshログインしてください。秘密鍵のパスフレーズを聞かれません。

$ ssh -p 2222  1234example@1234example-heteml.netCode language: Bash (bash)

残念ながら、%HOME%\.ssh\config に登録したHost名でSSH接続すると、パスフレーズを聞かれてしまいます。

$ ssh heteml
Enter passphrase for key 'C:\Users\aoki.makoto\.ssh\id_rsa_heteml':Code language: Bash (bash)

これができたらいいのにね

パスワード認証でログインする場合は、ssh-add -Dで、ssh-addした秘密鍵とパスフレーズを削除してから、sshログインします。

$ ssh-add -D

$ ssh -p 2222  1234example@1234example-heteml.net
1234example@1234example-heteml.net's password: 

Mac OS X

キーペア作成

キーペアのファイル数が少なければ ~/.ssh/ 直下に作成してもいいですし、キーペアのファイル数が多ければ、~/.ssh/ にサブディレクトリを作って、整理してもいいです。

ここでは、id_rsa_heteml、id_rsa_heteml.pub を作成します。

途中で、パスフレーズを入力してください。パスフレーズはパスワードマネージャーなどで管理してください。

$ cd ~
$ mkdir .ssh
$ chmod 700 .ssh

$ cd .ssh

$ ssh-keygen -t rsa -f id_rsa_heteml
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

$ ls
id_rsa_heteml   id_rsa_heteml.pubCode language: Bash (bash)

pub付きが、公開鍵

pub無しが、秘密鍵

ヘテムルに公開鍵をコピー

ssh-copy-idコマンドで、公開鍵をヘテムル側の ~/.ssh/authorized_keysに追加します。

-i オプションには「公開鍵(pub付き)」を指定します。

$ ssh-copy-id  -i id_rsa_heteml.pub  -p 2222  1234example@ssh-1234example.heteml.netCode language: Bash (bash)

公開鍵認証でSSHログインできるはずです。

-i オプションには「秘密鍵(pub無し)」を指定します。

秘密鍵のパスフレーズを入力してください。

$ ssh  -i ~/.ssh/id_rsa_heteml  -p 2222  1234example@ssh-1234example.heteml.net
Enter passphrase for key '/Users/aoki.makoto/.ssh/id_rsa_heteml':Code language: Bash (bash)

.ssh/configに登録

SSH接続する機会が多ければ、さきほどのコマンドを入力するのは面倒です。

めったにSSH接続しないのなら、さきほどのコマンドを忘れています。

そこで、~/.ssh/configに登録しておきます。

Host heteml
  # 2020-04-06
  HostName ssh-1234example.heteml.net
  User 1234example
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile ~/.ssh/id_rsa_heteml
  IdentitiesOnly yes
  LogLevel FATAL
  UseKeyChain yes
  AddKeysToAgent yes
Code language: plaintext (plaintext)

~/.ssh/configに登録しておくと、SSH接続でHost名を指定するだけでよくなります。Host名を忘れたら、~/.ssh/config を見ればわかります。

> ssh heteml
Enter passphrase for key '/Users/aoki.makoto/.ssh/id_rsa_heteml':Code language: Bash (bash)

.ssh/config のことも忘れそうだな

ネットで調べているうちに思い出せるといいわね

ssh-add

パスフレーズの入力も面倒なんだけど

SSHログインするときは、その日のうちに何回もSSHログインするものです。すると、毎回、秘密鍵のパスフレーズを入力するのも面倒になります。

そこで、ssh-addコマンドで、秘密鍵とパスフレーズを登録しておきます。以後、パスフレーズを入力することなく、SSHログインできます。

-K オプションをつけると、キーチェーンにパスフレーズも記憶されるので、PC再起動後に ssh-add する必要がありません。

$ ssh-add -K ~/.ssh/id_rsa_heteml
Enter passphrase for /Users/aoki.makoto/.ssh/id_rsa_heteml: Code language: Bash (bash)

もし次のようなエラーが表示されたら、ssh-agentが起動していません。ssh-agentを起動してください。

$ ssh-add -K ~/.ssh/id_rsa_heteml
Could not open a connection to your authentication agent.

$ eval $(ssh-agent -s)
Agent pid 13244Code language: Bash (bash)

sshログインしてください。秘密鍵のパスフレーズを聞かれません。

$ ssh hetemlCode language: Bash (bash)

パスワード認証でもsshログインできます。秘密鍵のパスフレーズではなく、ヘテムルのコントロールパネルで設定したSSHパスワードです。

$ ssh -p 2222  1234example@1234example-heteml.net
1234example@1234example-heteml.net's password: 

Ubuntu 18.04

キーペア作成

キーペアのファイル数が少なければ ~/.ssh/ 直下に作成してもいいですし、キーペアのファイル数が多ければ、~/.ssh/ にサブディレクトリを作って、整理してもいいです。

ここでは、id_rsa_heteml、id_rsa_heteml.pub を作成します。

途中で、パスフレーズを入力してください。パスフレーズはパスワードマネージャーなどで管理してください。

$ cd ~
$ mkdir .ssh
$ chmod 700 .ssh

$ cd .ssh

$ ssh-keygen -t rsa -f id_rsa_heteml
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

$ ls
id_rsa_heteml   id_rsa_heteml.pubCode language: Bash (bash)

pub付きが、公開鍵

pub無しが、秘密鍵

ヘテムルに公開鍵をコピー

ssh-copy-idコマンドで、公開鍵をヘテムル側の ~/.ssh/authorized_keysに追加します。

-i オプションには「公開鍵(pub付き)」を指定します。

$ ssh-copy-id  -i id_rsa_heteml.pub  -p 2222  1234example@ssh-1234example.heteml.netCode language: Bash (bash)

公開鍵認証でSSHログインできるはずです。

-i オプションには「秘密鍵(pub無し)」を指定します。

秘密鍵のパスフレーズを入力してください。

$ ssh  -i ~/.ssh/id_rsa_heteml  -p 2222  1234example@ssh-1234example.heteml.net
Enter passphrase for key '/home/aoki/.ssh/id_rsa_heteml':Code language: Bash (bash)

.ssh/configに登録

SSH接続する機会が多ければ、さきほどのコマンドを入力するのは面倒です。

めったにSSH接続しないのなら、さきほどのコマンドを忘れています。

そこで、~/.ssh/configに登録しておきます。

Host heteml
  # 2020-04-06
  HostName ssh-1234example.heteml.net
  User 1234example
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /home/aoki/.ssh/id_rsa_heteml
  IdentitiesOnly yes
  LogLevel FATALCode language: plaintext (plaintext)

~/.ssh/configに登録しておくと、SSH接続でHost名を指定するだけでよくなります。Host名を忘れたら、~/.ssh/config を見ればわかります。

$ ssh heteml
Enter passphrase for key '/home/aoki/.ssh/id_rsa_heteml':Code language: Bash (bash)

.ssh/config のことも忘れそうだな

ネットで調べているうちに思い出せるといいわね

ssh-add

パスフレーズの入力も面倒なんだけど

SSHログインするときは、その日のうちに何回もSSHログインするものです。すると、毎回、秘密鍵のパスフレーズを入力するのも面倒になります。

そこで、ssh-addコマンドで、秘密鍵とパスフレーズを登録しておきます。以後、パスフレーズを入力することなく、SSHログインできます。

PC再起動後、sshログイン前に一度は、ssh-addする必要があります。

$ ssh-add ~/.ssh/id_rsa_heteml
Enter passphrase for /home/aoki/.ssh/id_rsa_heteml: Code language: Bash (bash)

もし次のようなエラーが表示されたら、ssh-agentが起動していません。ssh-agentを起動してください。

$ ssh-add ~/.ssh/id_rsa_heteml
Could not open a connection to your authentication agent.

$ eval $(ssh-agent -s)
Agent pid 13244Code language: Bash (bash)

sshログインしてください。秘密鍵のパスフレーズを聞かれません。

$ ssh hetemlCode language: Bash (bash)

パスワード認証でもsshログインできます。秘密鍵のパスフレーズではなく、ヘテムルのコントロールパネルで設定したSSHパスワードです。

$ ssh -p 2222  1234example@1234example-heteml.net
1234example@1234example-heteml.net's password: 
企業サイトや人気サイトの運用実績多数!月額800円(税抜)~の高スペックレンタルサーバー
タイトルとURLをコピーしました