今回は、サーバーへの公開鍵認証方式ssh接続の流れを書きます。(ほぼ備忘録)
目標は複数のサーバーに自由にssh接続できること。
流れは以下にのようになります。
- rsaキー作成
- id_rsa.pubの受け渡し
- id_rsa.pubをAuthorized Keysへ登録
- ssh config編集
- 使い方
環境
クライアント: 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