ssh接続の基本(公開鍵認証方式)


今回は、サーバーへの公開鍵認証方式ssh接続の流れを書きます。(ほぼ備忘録)
目標は複数のサーバーに自由にssh接続できること。

流れは以下にのようになります。

  1. rsaキー作成
  2. id_rsa.pubの受け渡し
  3. id_rsa.pubをAuthorized Keysへ登録
  4. ssh config編集
  5. 使い方

環境

クライアント: OSX 10.10.3 Yosemite
サーバー:Debian8(ConoHa VPS)

/etc/ssh/sshd_config
//サーバーはパスワード認証、公開鍵認証できる状態にしておいてください。
//ファイル内のどこかにある項目
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys
PasswordAuthentication yes
//総当たりを防止のため、公開鍵認証で接続できる事が確認できしだい変更した方が良いです。
PasswordAuthentication no
//今回はrootで接続する事を確認しますが、終わったらnoに変更した方が良いです。
//(ユーザを新規に作って、そのユーザで操作する。)
PermitRootLogin  no

rsaキー作成

まず、クライアントでrsaキーを作ります。
念のため、作った秘密鍵は他のユーザに読まれないように権限を変えてください。

terminal(クライアント)
$ pwd
  /Users/"ユーザー名"
$ cd ./.ssh  //フォルダが無い場合は作る。
$ ssh-keygen -t rsa 
//-中略- 画像参照
$ ls
id_rsa , id_rsa.pub
$ chmod 400 id_rsa //read権限があれば問題ないです。

1つの接続に1つのキーを作るため、ファイルの名前は任意のものに変えた方がいいです。
(変えないと上書きされます。)

※追記(2015/8/30)
公開鍵(id_rsa.pub)を複数のサーバで使えば一つの秘密鍵(id_rsa)で全部にログインできます。

id_rsa.pubの受け渡し

scpを使い、先ほど作ったid_rsa.pubをサーバーへと送ります。
送り方はセキュアに渡せればなんでもいいです。("公開"鍵なので平文でもいいですが念のため)
※秘密鍵(id_rsa)を渡さないように注意

terminal(クライアント)
$ pwd
  /Users/"ユーザ名"/.ssh
$ scp ./id_rsa.pub root@aaa.bbb.ccc.ddd:/home/"サーバー側のユーザ名"/.ssh/id_rsa.pub

id_rsa.pubをAuthorized Keysへ登録

terminal(サーバー)
$ pwd
  /Home/"ユーザ名"/.ssh
$ cat ./id_rsa.pub >>  ./authorized_keys //authorized_keysに追記します。
//以後このファイルに公開鍵を追記していけば問題ないです。
$ rm ./id_rsa.pub //いらないので消しておく

ssh config編集

terminal(クライアント)
$ pwd
  /Home/"ユーザ名"/.ssh
$ vim config //emacs,nanoお好きなエディタで...
  Host Myserver_hoge //任意の名前
        HostName  aaa.bbb.ccc.ddd //サーバーのipアドレス ipv4/6
        port 6022 //ssh用のポート番号
        IdentityFile ./id_rsa //先ほど作った秘密鍵のファイル
        User hoge //ログインする名前

  Host Conoha_root //ConoHaのrootの例
        HostName  aaa.bbb.ccc.ddd
        port 6022
        IdentityFile ./id.pem //ConoHaのサーバーを立てた際にDLしたroot用ファイル
        User root
//書いておいてなんですが、rootではログインできない用にしておくべきです。(設定は上記の環境を参照)

使い方

毎回 秘密鍵を指定したり、アドレスを打ったりしなくてもいいので便利です。

terminal(クライアント)
$ pwd
  /Home/"ユーザ名"/.ssh
$ ssh Myserver_hoge
$ ssh Conoha_root

参考

Debian 8 Jessie : SSHサーバー : SSH 鍵認証 : Server World