学内のLinuxマシンから学外のLinux仮想サーバーへ、公開鍵認証によるssh接続の方法を説明します。公開鍵と秘密鍵のペアを作成し、秘密鍵は手元のPCに置き、公開鍵をサーバー管理者に送って、サーバーにアカウントを用意してもらいます。
1. ssh-keygenコマンドによる鍵の作成
$ ssh-keygen -t rsa
とコマンドを入力すると、鍵ファイルの名前をどうするか聞かれる。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/******/.ssh/id_rsa):
デフォルトのファイル名でよければ何も入力せずにenterキーを押す。すると鍵ファイル使用時に聞かれるパスフレーズの入力を求められる。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/******/.ssh/id_rsa): Enter passphrase (empty for no passphrase):
2回パスフレーズを入力すると、以下のようなメッセージが出力され、コマンドプロンプトが復帰する。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/******/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/******/.ssh/id_rsa. Your public key has been saved in /home/******/.ssh/id_rsa.pub. The key fingerprint is: ************************************************************** The key's randomart image is: +--[ RSA 2048]----+ | | | | | + = | | . X O | | B S o | | o o @ . | | + E o . | | . . | | | +-----------------+
2. サーバ管理者へ公開鍵を送付
~/.ssh ディレクトリに公開鍵がテキスト形式で生成される(デフォルトはid_rsa.pub)。このファイルをサーバー管理者に送る。
3. .ssh/configの編集
接続先の情報を.ssh/configファイルに登録しておく。Hostには接続するサーバのエントリー名を適当に指定する。Hostnameには接続先のサーバのipアドレスもしくはURL、Userには接続先のアカウントのユーザIDを記入する。IdentityFileにはたった今作った秘密鍵を指定する。
Host aws Hostname ***.***.***.*** User ******* IdentityFile ~/.ssh/id_rsa
4. sshサーバへの接続
サーバ管理者から公開鍵登録完了の通知を受けたら、登録したエントリー名を指定してsshコマンドを入力する。
$ssh aws
パスフレーズの入力を求められたら、鍵生成時に決めたパスフレーズを入力すること。
以上で接続完了。