Amazon Linux (EC2) に秘密鍵でSSH接続できるようにする
べつにデフォルトで秘密鍵だけど違う鍵を使いたかったので
作業の流れ
秘密鍵で接続するために必要な作業は、基本的にはこう↓
ssh-keygen
コマンドで公開鍵・秘密鍵のペアを作る- サーバー側に公開鍵を置く
- クライアント側 (サーバーに接続したい端末) に秘密鍵を持ってくる
- クライアント側から秘密鍵を使って接続する
設定作業は、『秘密鍵でログインできるようにしたいユーザー』でサーバーにログインして行う。
公開鍵の置き場所を確認
鍵を作る前に置き場所を確認しておく。/etc/ssh/sshd_config
の AuthorizedKeysFile
の行を見る。
AmazonLinuxではデフォルトで .ssh/authorized_keys
になっている。この記事はその体で書く。
鍵置き場のディレクトリ (この場合は ~/.ssh
) のパーミッションが 700
になっていることも確認し、違ったら chmod
で設定しておく。
公開鍵・秘密鍵のペアを作る
鍵置き場で ssh-keygen
して、公開鍵・秘密鍵のペアを作成する。
以下の方法でやった場合、デフォルトでは公開鍵として id_rsa.pub
が、秘密鍵として id_rsa
が作成される。パスフレーズを設定するか聞かれるので、必要なら設定する。
サーバー側に公開鍵を置く
作成した公開鍵 id_rsa.pub
を鍵ファイルに追記する。鍵ファイルのパーミッションが 600
になっていることも確認し、違ったら chmod
で設定しておく。
クライアント側に秘密鍵を持ってくる
作成した秘密鍵 id_rsa
をクライアント側に持ってくる。FTPで持ってくるなり、本文をコピペするなり適当な方法で。ファイル名はなんでもいい。
持ってきたら、サーバー側の秘密鍵は消してよい。消しておく。
クライアント側から秘密鍵を使って接続する
例えば ssh
コマンドを使って、ec2-user
として 1.1.1.1
に接続するなら以下の通り。-i
オプションでローカルの鍵ファイルを指定できる。
WinSCP を使う場合は、サイトの設定から SSH → 認証 でローカルの鍵ファイルを設定すればよい。ただし ssh-keygen
で作成した鍵はPEM形式なので、そのままだとWinSCPで利用できない。PuTTY形式に変換させてくれと言われるので、言われるままに変換してもらったファイルを別名で保存し、そちらを選択して使用する。
TeraTerm を使う場合は、リンク先を以下のようにしたショートカットを作るのが便利。