2010年11月19日金曜日

今更聞けないUNIXコマンド (3) 公開鍵認証方式+ssh ログイン

職場、学校等のサーバが公開鍵認証方式を採用している場合は多いです。
その設定を昨日やったので、一応書いておきます。windowsではputtyなんかでやってましたが、macではTerminalから全部できて便利。

まずは

% ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tatsuaki/.ssh/id_rsa): 
Created directory '/Users/tatsuaki/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

てなかんじでssh-keygenにより公開鍵, 秘密鍵のペアを生成します.
公開鍵は他人に見られてもオッケーですが、秘密鍵は秘密なのでこれは絶対秘密です.
-t オプションは鍵の種類を設定します. dsaとかありますがデフォルトではrsa2である-t rsaが決まっていて,
これが推奨らしいのでこれでやりましょう.

コマンドを入れるとkeyを作る場所を聞かれるのでいれます. デフォルトで~/.ssh/に入ります.

次にパスフレーズを聞かれるので, パスワードを2回いれます. (これでサーバへ認証します)

% cd .ssh
id_rsa  id_rsa.pub
と2つファイルがあり, id_rsa, id_rsa.pubがありますが, 後者が公開鍵です.
これをサーバへ転送します.

とは言え自分はつながっていないので誰かに頼みましょう. 私の場合は違うマシンで入れたのでそっちへ
メールで送り, そこから設定しました.

ここからはサーバ側の設定です.

サーバへファイルid_rsa.pubを送りましょう. sftpやらscpやら単純にftpやらありますが,
scpでやるならば

$ scp [オプション][転送したいファイル名][転送先のパス]
とします.

たとえば
$ scp test.txt USER1@remotehost.co.jp:.ssh
で手元にあるtest.txtをUSER1としてログインするremotehost.co.jpの~/.ssh/へ送ります.
パスワードを聞かれますので入力すればok. ちなみに, scpは-rオプションでディレクトリを転送します.

サーバ管理者がどうしているか分かりませんが, サーバのユーザホームディレクトリに.sshがあるはずなので,
(なければ作る)

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

でauthorized_keysへ内容を書き込みます. これにて終了.
ちなみに
$ chmod 600 ~/.ssh/authorized_keys
でパーミッションを変更して他から表示できないようにしといた方が安全です.


あとはログインするときは

$ ssh USER1@remotehost.co.jp 

あるいは

$ ssh -l USER1 remotehost.co.jp
で入れます.

あと, 普通にやっていれば公開鍵がユーザの~/.ssh/known_hostsに追加されるはずですが, エラーが出たり
古かったりすると問題です. 書式は以下の通り.

ホスト名, IP  キー種別  ホスト公開鍵
    #  コメント
   例:
    remotehost.co.jp, 192.168.1.2 ssh-rsa AAAAB3NzaC1...nXIDE=.......
改行すれば何個も指定できます.

0 件のコメント:

コメントを投稿