SSHでセキュアに
SSHとは
SSHとはSecure SHellの略であり、一般的にtelnetに暗号化を施した物との認識がある。だが、その他にも便利な機能がたくさんある。今回使用するOpenSSHには、telnetのsshやFTPのSFTPといった機能がある。そして、すばらしいポートフォワードもある。
さっそくインスト
apt-get install ssh
インスト時にセキュリティ的にバージョン1は問題があるのでバージョン2だけ使えるようにしますか?って聞かれるのでYESと答えてやりましょう。
設定
/etc/ssh/sshd_configに設定ファイルができるので以下を変更してやります。
Port 2222 #22のままだとアタックが激しいので変えてやる PermitRootLogin no #rootログイン拒否 PasswordAuthentication no #パスワードによるログイン拒否 RSAAuthentication yes #RSAの公開鍵認証を有効にする PubkeyAuthentication yes #公開鍵を使用する AuthorizedKeysFile %h/.ssh/authorized_keys #認証鍵の設置場所 IgnoreRhosts yes #.rhostsを無効 RhostsRSAAuthentication no #/etc/ssh_known_hostsを無効 HostbasedAuthentication no #ホスト認証を無効 ChallengeResponseAuthentication no #チャレンジレスポンスを無効 UsePAM no #PAMを無効
鍵の作成
SSHの認証方式でRSAの公開鍵認証を使用します。簡単に説明すると、サーバで公開鍵を持って、クライアントが秘密鍵を持って認証する。はい、それだけです。
この作業は通常使うユーザで実行する必要があります。もちろん、ユーザ毎に設定が必要です。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/foge/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/foge/.ssh/id_rsa. Your public key has been saved in /home/foge/.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx foge@nai.homelinux.net
「Enter passphrase (empty for no passphrase):」このパスフレーズというのは鍵作成に必要なパスワードフレーズです。通常のログインパスワードとは別にするのが望ましいですな。
~/.ssh/の下に2つの鍵ファイルが作成されるんで、下の様にやってください。
- 公開鍵(~/.ssh/id_rsa.pub)
sshd_configで設定した通りのファイル名に変更する
$mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
- 秘密鍵(~/.ssh/id_rsa)
クライアントに安全に渡す。USBメモリやフロッピーディスクなりで。サーバにはファイルを残さないこと
$rm ~/.ssh/id_rsa
クライアント接続
さっそく、クライアントからリモートアクセスしてみよう。今回はTeraTermを使用する。
http://www.forest.impress.co.jp/lib/inet/servernt/netuty/utf8teraterm.html
接続先を設定
以下のように、ホスト、ポート、SSHのバージョンを選らんでOKを押す。

鍵の設定
次にID、パスワードを入力し、上で作成した鍵ファイルを指定してやる。

パスフレーズ無しにするには
SSHでパスフレーズ無しもできる。ssh-keygenでパスフレーズを無しと答えればいい。具体的には、「Enter passphrase (empty for no passphrase):」の時に、エンターを押せばいい。そうすれば、パスフレーズがなくなる。cygwinとかsftpとかsshなど使うと快適。
SFTP
デフォルトで/etc/ssh/sshd_configに以下のような設定がある。
Subsystem sftp /usr/lib/sftp-server
SFTPが使えるので、つかってみよう。
クライアント
winscpという日本語にも対応しているソフトがあるので使用する。
http://winscp.net/eng/download.php
ここの「Multilanguage installation package」は日本語も使える。