SSHキーの作成と使用方法

0 株式
0
0
0
0

導入

SSHプロトコルを使用すると、クライアントサーバーアーキテクチャにおいて、安全でないネットワーク上で安全なチャネルを確立し、SSHクライアントとSSHサーバーを接続できます。SSH鍵セットを作成すると、公開鍵と秘密鍵が作成されます。公開鍵をサーバーに配置し、対応する秘密鍵を持つクライアントでそのサーバーに接続できます。SSHの公開鍵と秘密鍵が一致すれば、パスワードなしでログインできます。.

これは通常、最も安全で便利な接続方法です。.

このガイドでは、リモート サーバーへの安全な接続のためにローカル マシンで SSH キーを構成する方法について説明します。.

前提条件
  • OVHcloudコントロールパネルへのアクセス
  • OVHcloudアカウントの専用サーバーまたはVPS
  • SSHクライアントプログラム(コマンドラインまたはGUI)
  • SSH経由でサーバーに管理者(sudo)アクセスする

このガイドは、接続にリモートデスクトッププロトコル(RDP)を使用する標準的なWindows Serverインストールには適用されません。OVHcloudレスキューモードではSSH接続が使用されます。詳細については、このガイドの「詳細」セクションをご覧ください。.

SSHキーペアの作成

次の手順では、SSH キーを使用する 2 つの方法について説明します。

  • Open SSH キーペアを作成し、SSH コマンドラインクライアントからサーバーに接続する
  • PuTTYキーペアを作成し、PuTTY SSHクライアントからサーバーに接続する

両方の方法を併用することは可能ですが、PuTTYは鍵ファイルを特定の形式で保存するため、Open SSHクライアントで作成されたSSH鍵ファイルとは互換性がないことに注意してください。つまり、SSHコマンドラインクライアントで作成された秘密鍵は、まずPuTTY形式に変換する必要があります(逆も同様です)。.

コマンドラインからSSHキーペアを作成する

Mac コンピューターまたは Linux オペレーティング システムがインストールされているデバイスから、コマンド ライン アプリケーション (ターミナル) を開きます。.

$HOMEフォルダ内に.sshというフォルダがあることを確認してください。フォルダが存在しない場合は作成してください。

mkdir ~/.ssh

現在の Windows オペレーティング システムでは、検索バーに「cmd」と入力してコマンド プロンプトを開きます (またはメニューから PowerShell を開きます)。.

アクティブな Windows ユーザーの .ssh ディレクトリに移動します (デフォルト: C:\Users\WindowsUsername\.ssh)。

cd .ssh

4096 ビットの RSA キーを生成するには、次のコマンドを使用します。

ssh-keygen -b 4096

このコマンドで -t オプションを使用すると、別の暗号化方法を指定できます。例:

ssh-keygen -t ed25519 -a 256

コマンドラインでは、新しく作成されたキーを標準ファイルに保存するように求められます。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):

Enterキーを押して、提案されたファイル名を受け入れるか、個別の名前を入力するかを選択できます。これは、.sshディレクトリに複数の鍵ペアを配置する場合に重要です。詳細については、「複数のSSH鍵の管理」セクションをご覧ください。.
この例では、標準ファイル名 id_rsa と id_rsa.pub を使用します。.

次のプロンプトでは、SSHキーをパスフレーズで保護できます。セキュリティ強化のため、パスフレーズの使用をお勧めします。.

サーバーへのリモートアクセスの安全性は、秘密鍵を保存するクライアントデバイスの安全性に依存します。そのため、SSH鍵を使用する場合は、デバイスとファイルを不正アクセスから保護することが重要です。.

利便性とセキュリティ上の理由から、オープン ソース ソリューションの KeePass などのパスワード マネージャーをデバイスで使用してください。.

すべてのSSHキーは.sshフォルダに保存する必要があります。公開鍵ファイルのファイル名には.pubが含まれます。.

Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MRk+Y0zCOoOkferhkTvMpcMsYspj212lK7sEauNap user@hostname
The key's randomart image is:
+---[RSA 4096]----+
| .. o |
| . .= o |
| o o X |
|. . . . |
|. .=.o .S. |
| =o.o. . . |
|o + . . o .. |
|.. . . oEoo . |
|o. .o+oo |
+----[SHA256]-----+

公開鍵を表示およびエクスポートするには、pub.key ファイルに対して cat コマンドを使用します。鍵の文字列全体をクリップボードにコピーして、後でサーバーに追加してください。.

cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8teh2NJ42qYZV98gTNhumO1b6rMYIkAfRVazl
k6dSS3xf2MXJ4YHsDacdjtJ+evXCFBy/IWgdkFtcvsGAMZ2N1RdvhDyQYcy6NDaJCBYw1K6Gv5fJ
SHCiFXvMF0MRRUSMneYlidxUJg9eDvdygny4xOdC6c1JrPrSgOc2nQuKeMpOoOWLINIswg1IIFVk
kFMPrFivP8Z6tidzVpAtbr1sXmJGZazYWrU3FoK2a1sF1zEWrmlMOzX81zEWrmlMOzX8CpZW8Rae
i4ANmLy7NULWK36yU0Rp9bFJ4o0/4PTkZiDCsK0QyHhAJXdLN7ZHpfJtHIPCnexmwIMLfIhCWhO5
user@hostname

macOSのターミナルでは、pbcopyコマンドとpbpasteコマンドを使って鍵文字列をより素早く管理できます。例えば、id_rsa.pubファイルから鍵をクリップボードにコピーするには、次のコマンドを使用します。

pbcopy < ~/.ssh/id_rsa.pub

Windows では、ファイル エクスプローラーからメモ帳でファイルを開く (ファイルを右クリックして [開く] を選択) か、次のコマンドのいずれかを使用します (\Users\WindowsUsername\.ssh 内)。

  • コマンド
more id_rsa.pub
  • パワーシェル
cat id_rsa.pub

完全なキー文字列をクリップボードにコピーして、後でサーバーに追加します。.

クリップボードの使用

Windowsのコマンドプロンプトで作業している場合、右クリックするとクリップボードの内容をコマンドプロンプトウィンドウに貼り付けることができます。コマンドプロンプトウィンドウから文字列をコピーするには、コピーする文字列をハイライト表示してEnterキーを押します。これらの機能は、メニューバーを右クリックすることでも利用できます。.

PuTTYでSSHキーペアを作成する

PuTTYは、Windowsをはじめとする様々なオペレーティングシステムで利用可能な、グラフィカルユーザーインターフェースを備えたオープンソースのSSHクライアントソフトウェアです。SSHキーを生成するためのコンパニオンソフトウェアであるPuTTY Key Generator(PuTTYgen)も提供されています。.

PuTTYの主な目的は、WindowsクライアントマシンからGNU/LinuxサーバーへのSSH接続を管理することです。PuTTYは鍵ファイルを特定の形式で保存するため、ほとんどの最新オペレーティングシステムにネイティブで搭載されているOpen SSHクライアントで作成されたSSH鍵ファイルとは互換性がありません。.

必要に応じて、上記のようにコマンドラインから生成された鍵をPPK形式に変換し、PuTTYクライアントで使用できます。SSH鍵を最も便利に使用するには、どちらかのオプション(SSH秘密鍵またはPuTTY秘密鍵)を選択して使い続けることをお勧めします。.

まだインストールされていない場合は(プログラムリストを確認するか、検索機能をご利用ください)、公式サイトからPuTTYをダウンロードしてください。推奨される標準インストールパッケージにはPuTTYgenが含まれていますが、ウェブサイトからスタンドアロンファイルとして入手することもできます。.

PuTTYgenを開き、サポートされている暗号化アルゴリズムを選択します。この例ではRSAを使用します。右下隅にビット数として4096を入力し、「生成」ボタンをクリックします。.

進行状況バーの下の領域でマウス ポインターを自由に移動します。

進行状況バーがいっぱいになると、キーの準備が完了します。.

キー文字列全体をクリップボードにコピーしてサーバーに追加します。対応するボタンをクリックして両方のキーをファイルとして保存し、パスフレーズを入力して保護してください。.

サーバーへのリモートアクセスの安全性は、秘密鍵を保存するクライアントデバイスの安全性に依存します。そのため、SSH鍵を使用する場合は、デバイスとファイルを不正アクセスから保護することが重要です。.

利便性とセキュリティ上の理由から、オープン ソース ソリューションの KeePass などのパスワード マネージャーをデバイスで使用してください。.

PuTTYを使用する利点の一つは、複数の接続をセッションとして保存できることです。詳しくは、以下の「ローカルマシンで複数のSSHキーを管理する」セクションをご覧ください。.

SSH 接続の詳細については、「入門ガイド」および「SSH の概要」をご覧ください。.

サーバーにSSHキーを追加する

GNU/Linux、MacOS、BSDベースのシステムで作成された公開鍵の転送
GNU/Linux、MacOS、または BSD ベースのシステムで SSH キー ペアを作成した場合は、ssh-copy-id コマンドを使用して公開キーをサーバーに追加できます。.

ssh-copy-id ツールは、指定されたリモート サーバーのファイル ~/.ssh/authorized_keys に公開キーをコピーし、必要に応じてこのディレクトリにファイルを自動的に作成します。.

ssh-copy-id user@IP_ADDRESS

デフォルトでは、ssh-copy-id はすべての公開鍵をローカルユーザーの ~/.ssh ディレクトリに移動しようとします。公開鍵を追加するには、-i オプションに続けてファイルへのパスを指定して、その鍵ファイルを指定します。

ssh-copy-id -i ~/.ssh/KeyFileName user@IP_ADDRESS

例:

ssh-copy-id -i ~/.ssh/VPS_rsa.pub [email protected]

ユーザーパスワードの入力を求められます。プロセスが成功すると、以下の画像のようなメッセージが表示されます。.

Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user@server-ip'"
and check to make sure that only the key(s) you wanted were added.

代わりにエラー メッセージが表示される場合は、以下の手順に従って公開キーを手動で追加することができます。.

ベストプラクティスとして、またセキュリティ上の理由から、同じ鍵ペアを複数のユーザーで使用しないでください。GNU/Linuxシステムでは、各ユーザーが~/.ssh/に独自のauthorized_keysファイルを持っているため、上記のようにssh-copy-idコマンドを使用して、鍵ペアを作成した後、KeyFileNameとユーザーを一致させることができます。.

公開鍵を手動でサーバーに追加する

サーバーに接続し、ユーザーの$HOMEディレクトリにいることを確認してください。.sshフォルダが存在しない場合は作成してください。

mkdir ~/.ssh

現在のユーザーのキーを保存するには、お気に入りのテキスト エディター (この例では nano が使用されています) を使用して authorized_keys ファイルを開く (または作成する) 必要があります。

nano ~/.ssh/authorized_keys

このファイルに公開鍵を配置します。ファイルを保存し、エディタを終了します。サーバーを再起動(sudo reboot)するか、以下のいずれかのコマンドでOpenSSHサービスを再起動します(適切なコマンドはオペレーティングシステムによって異なる場合があります)。

sudo systemctl restart ssh
sudo systemctl restart sshd

キーが正しく設定されていることを確認するには、以下のコマンドでサーバーに接続してください。「user」はキーを作成したユーザー名、「IP_ADDRESS」はアクセスしたいサーバーのIPアドレス(またはホスト名)に置き換えてください。

ssh user@IP_ADDRESS

例:

サーバーに公開鍵を追加する

サーバーにアクセスできる他のユーザーの SSH キーを追加するには、キー作成手順を繰り返しますが、適切な $HOME フォルダーまたは対象ユーザーの Windows ユーザー ディレクトリを使用して SSH キーを作成して保存します (または、このユーザーの専用マシンでコマンドを実行します)。次に、上記の authorized_keys で説明したように、新しい公開キーをサーバーに追加します。.

サーバーから公開鍵を削除する

上記のように authorized_keys ファイルを開き、アクセスが取り消されたユーザーのキー文字列を削除します。.

ファイルを保存してエディターを終了します。.

ローカルマシンで複数のSSHキーを管理する

複数の SSH キーペアを使用して、異なるリモート ホストに接続する必要がある場合があります。(PuTTY を使用している場合は、以下の関連セクションに進んでください。)

すべての鍵はローカルマシンの.sshフォルダに配置する必要があるため、ファイル名はそれぞれ異なっている必要があります。新しい鍵ペアを作成し、ファイル名の入力を求められた場合は、任意の名前を入力してください。例えば、サーバー名と同じ名前にしてください。.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): KeyFileName_rsa
Your identification has been saved in /home/user/.ssh/KeyFileName_rsa.
Your public key has been saved in /home/user/.ssh/KeyFileName_rsa.pub.

関連するサーバーに接続するときは、ユーザーとサーバーの詳細に加えて、キーファイルの名前を指定します。

ssh -i ~/.ssh/KeyFileName user@IP_ADDRESS

例:

ssh -i ~/.ssh/myVPS_rsa [email protected]

前のセクションで述べたように、Windowsクライアントでも同じ手順が使えます。~/ をWindowsユーザーフォルダへのパス(デフォルトではC:\Users\WindowsUsername\)に置き換えてください。(例:ssh -i C:\Users\Username\.ssh/myVPS_rsa [email protected]

「config」ファイルの使用。.

~/.sshフォルダ(Windowsの場合は\Users\Username\.ssh)内のconfigファイルを編集するたびに-iオプションを追加する代わりに、異なる接続の詳細(ユーザー名、ポート、キーファイル、オプションパラメータなど)を設定できます。.

このファイルが.ssh内に存在する場合、すでに情報が含まれている可能性があります。環境に応じて、まず元のファイルのバックアップを作成してください。.

.ssh フォルダの内容の例:

ls ~/.ssh/
config id_rsa id_rsa.pub known_hosts known_hosts.old

設定ファイルでは、標準値に加えて、複数のSSH接続とそれぞれのパラメータを保存できます。このファイルは複数のサーバーを定期的に管理する経験豊富なユーザーにとって非常に便利なため、その機能を最大限に活用するのは難しい場合があります。.

以下は、VPS への SSH 接続を構成する方法を説明する簡単な例です。.
ファイルを開き、先頭に次の行を追加します。

Host vps
HostName 203.0.113.100
IdentityFile ~/.ssh/myVPS_rsa

その後、ホストとして定義したエイリアスを使用して VPS に接続できます。

ssh ubuntu@vps

前の例ではサーバーのIPアドレスと鍵ファイルのみを指定しましたが、さらに詳細を追加することもできます。ユーザー名「rocky」、変更されたSSHポート「49160」、ファイル「myserver_rsa」内の秘密鍵を使用して2番目のサーバーへのSSH接続を設定するには、ファイルの内容を次の例のように展開します。

Host vps
HostName 203.0.113.100
IdentityFile ~/.ssh/myVPS_rsa
Host dedicated_server
HostName 203.0.113.101
User rocky
Port 49160
IdentityFile ~/.ssh/myserver_rsa

次のように入力してこのサーバーに接続できます。

ssh dedicated_server

詳細については、関連するマニュアル ページを参照してください。.

PuTTYの使用

「PuTTY を使用して SSH キー ペアを作成し、SSH キーをサーバーに追加する」セクションの手順に従った場合は、サーバーに接続するために使用できるキー ペアが作成されます。.

PuTTYはSSH接続の認証情報とパラメータをセッションとして保存できます。これにより、異なるサーバーに別々の鍵で接続することも可能になります。.

PuTTY を開き、左側のメニューの SSH サブセクションを展開して、認証と資格情報をクリックします。.

[参照] ボタンをクリックし、保存したフォルダーから PuTTY 秘密キー ファイル (keyfile.ppk) を選択します。.

キーファイルは現在のSSHセッションに関連付けられました。左側のメニューの「セッション」に移動し、サーバーのログイン認証情報(ユーザー名@IPv4アドレス)を入力してください。.

「保存されたセッション」フィールドにこの接続の名前を入力し、「保存」をクリックしてリストに追加します。.

今後は、このセッション項目をクリックしてサーバーへの接続を開始できます。「開く」をクリックしてテストしてください。キーファイルをパスフレーズで保護している場合は、この時点でパスフレーズを入力する必要があります。.

別のサーバー接続を構成するには、手順を繰り返します。

  • キーペアを作成します。.
  • 公開鍵をサーバーに追加します。.
  • サーバーの詳細を入力し、PuTTY にキー ファイルを追加します。.
コメントを残す

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

あなたも気に入るかもしれない