リモートマシンへのアクセス

AWSなどのリモートマシンにssh接続する際のまとめです.
以下について簡単にまとめました.
ここでは, リモートマシンのsshd設定が終了しているという前提で話を勧めていきます.

  • 鍵のペアの生成
  • リモートマシンへのログイン

鍵のペアの生成

リモートマシンへアクセスするには公開鍵, 秘密鍵というものが必要になります.
誰でも簡単にリモートマシンへアクセスできてしまうと困るので, リモートマシンに公開鍵, 自分のマシンに秘密鍵をおいておくことで自分しかアクセスできないようにします.

以下のコマンドで鍵のペアを作ることができます.

$ ssh-keygen -t rsa
Enter file in which to save the key (/Users/develop36/.ssh/id_rsa):test
Enter passphrase (empty for no passphrase):

上記のコマンドを入力すると, ファイルの名前を入力するように問われます (Enter file in which… という部分).
上の例ではtestと入力したため, test.pubという公開鍵と, testという秘密鍵が生成されました.
ちなみに何も入力しないでEnterだけを押すと, ~.ssh/id_rsa.pubという公開鍵と, ~.ssh/id_rsaという秘密鍵が生成されます.

次にパスフレーズを入力するように問われます (Enter passphrase).
特に入力しないでも大丈夫ですが, パスフレーズは設定しておいたほうがセキュリティ的にはよろしいです.
公開鍵はリモートマシン上の~/.ssh/というディレクトリの中においておきましょう.

最後に, 生成した秘密鍵にアクセス権限を付加します.

$ chmod 600 <公開鍵のパス>

生成した公開鍵は, 絶対に他人に渡さないようにしてください.
パスフレーズが設定されてない場合, だれでもリモートマシンにアクセスできるようになってしまいます.

リモートマシンへのログイン

では実際にリモートマシンへログインしてみましょう.
次のようなコマンドでログインできます.

$ ssh -i <公開鍵のパス> <リモートマシンのユーザー名>@{リモートマシンのPublicIP}

これでリモートマシンへ無事接続できると思います.
接続できない場合は, コマンドの打ち間違い, ユーザーネームかPublicIPが間違ってる, リモートマシンが公開鍵を持っていない, リモートマシンのsshd接続が間違っているなどの原因が考えられます.

余談ですが, ssh接続が可能なリモートマシンとローカルマシン間でデータのやり問をするためのscpというコマンドが存在します.
便利ですのでぜひ使ってみてください!