2012年3月22日木曜日

sshの便利な設定

便利な便利なssh。

  • 結構ハマりどころも多いので、ググって適当に設定しても上手くいかないことがある
  • たまにしか設定しないので忘れがちで、少し調べると「あー、そうだった」なんて思うことが多い

ので一通りの手順をまとめ。


パスワード無しでログイン

  1. 秘密鍵と公開鍵の作成

    ssh-keygenコマンドで秘密鍵と公開鍵を生成する。
    $ ssh-keygen -t rsa -C "myaddress@gmail.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (~/.ssh/id_rsa): 空欄でよろしい
    Enter passphrase (empty for no passphrase): 任意の文字列を入力!
    Enter same passphrase again: もう一度任意の文字列を入力!
    Your identification has been saved in ~/.ssh/id_rsa.
    Your public key has been saved in ~/.ssh/id_rsa.pub.
    The key fingerprint is:
    3f:dc:4e:ff:ff:ff:db:55:a3:52:ee:ee:ee:7a:64:47 myaddress@gmail.com
    
  2. id_rsa(秘密鍵)とid_rsa.pub(公開鍵)ができている。秘密と公開となっているがどちらも人の目に触れないように管理しなければいけないので勘違いしないよう注意。
    $ ls
    id_rsa     id_rsa.pub
    
  3. パスワード無しでログインしたいサーバーに登録する。クライアント側に秘密鍵(このままでOK)、サーバーのauthorized_keysの中に公開鍵を登録するのが最終目標。

    とりあえず一度ログインして、known_hostsにサーバーのキーを自動登録。
    $ ssh server-01
    The authenticity of host 'server01 (127.0.0.1)' can't be established.
    RSA key fingerprint is 3f:dc:4e:ff:ff:ff:db:55:a3:52:ee:ee:ee:7a:64:47.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'server01' (RSA) to the list of known hosts.
    your_name@server01's password:
    Last login: Thu Mar 22 16:18:31 2012 from 192.168.0.0
    
    $ exit
    
  4. 続いてid_rsa.pubの内容をauthorized_keysに追加。

    scpでコピーしておいてからログインし追記でもいいし、
    $ scp ~/.ssh/id_rsa.pub your_name@server01
    $ ssh your_name@server01
    your_name@server01's password:ここは普通にログインパスワード
    Last login: Thu Mar 22 16:18:31 2012 from 192.168.0.0
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
    エディタで開いてコピペでもよろしい
    $ vi ~/.ssh/authorized_keys
    
  5. 必ずパーミッションを変更する!クライアント側もサーバー側も、.sshは自分だけが見れる状態にするのを忘れずに!これを怠るとパスワード聞かれちゃうよ!
    $ chmod 700 ~/.ssh
    $ chmod 600 ~/.ssh/*
    


複数の設定を使い分ける


  • 複数のサーバーがあり、別々の秘密鍵でアクセスしたい場合がある。社内や自分で用意したサーバーだけならば全て同じ秘密鍵でもいいんだけど、githubとかは別にしておきたい、とか。

    さらに、ホスト名を短縮した形で登録する機能も併せ持っているので、
    $ ssh 長いユーザー名@長いホスト名
    
    なんて毎回打ちたくない人にもオススメ。

  • .ssh/configファイルに記述します。詳しくはman ssh-configを見てください。
    $ vi ~/.ssh/config
    
    Host myserver
        HostName        long_long_host_name.localdomain.com
        IdentityFile    ~/.ssh/id_rsa
        User            long_long_user_name
    
    Host github
        HostName        github.com
        IdentityFile    ~/.ssh/id_dsa
        User            git
        PreferredAuthentications publickey
    
  • ssh myserverだけでパスワードも聞かれずにスパーンとログインできる!
    $ ssh myserver
    Last login: Thu Mar 22 16:48:27 2012 from 127.0.0.1
    $ 
    
  • githubの接続テスト。id_dsaを使用して接続を行う!
    $ ssh -T github
    Hi sporty! You've successfully authenticated, but GitHub does not provide shell access.
    $ 
    


これだけ押さえておけば特に問題ないはず。

0 件のコメント:

コメントを投稿