リモート環境で拠点間に通信を行う場合は、OpenVPN等でレイヤー2・3で接続すると、完全なLAN環境が構築できる。だが実際サーバのリモートサーバのメンテナンスやリモート側の特定のサービス(ポート)のみを使用したい場合はSSHが手軽で便利である。
- OpenSSH
- Putty(Windows SSHクライアント)
- WinSCP(Windows SCPクライアント)
- OS(FedoraCore 8)
OpenSSHのインストール&設定
rpmからサーバをインストール(用途によってはソースからコンパイルすべし)
> yum -y install openssh.i386
/etc/ssh/sshd_configを下記部分を編集
Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key ServerKeyBits 1024 SyslogFacility AUTHPRIV PermitRootLogin no RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PermitEmptyPasswords no PasswordAuthentication no ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes AllowUsers (ユーザー名) |
上記が最低限の設定。RSAのpubkeyのみでの接続を許可。少数人数のユーザーしか使用しない場合はAllowUsersを設定すると良い。また、Bannerなども変更しておくと良い(これは人によって考え方が違うみたい。。)
実際のサーバ運用をする際には、swatchによる攻撃や正常ログインの監視及びiptablesを使用したsshblacklist等をお勧めする(別の記事にて今度書きます)
次にクライアントのRSAキーを生成する。
>ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. |
生成したキーに対して下記の処理を行う。(権限の設定)
>cd $HOME/.ssh >cat id_rsa.pub > authorized_keys >chmod 600 authorized_keys |
ssh -l ユーザー名 -i id_rsaキーの場所 ホスト名 などで接続できれば設定成功。
上記のauthorized_keysに下記のオプションを設定することにより、ユーザー毎の接続を制御できる。
- command="command" ssh接続した際に指定されたコマンドを上書き実行。クライアントからの任意のコマンドを防ぐことができる
- environment="NAME=value" ログイン時の環境変数設定
- no-agent-forwarding agent-forwardingを禁止する
- no-port-forwarding port-forwardingを禁止する
- no-pty 仮想端末を割り当てない
- no-X11-forwarding X11フォワーディングを禁止する
- permitopen="host:port" 特定のホスト・ポートのみポートフォワードを許可する。Localフォワードはさせずに、Remoteフォワードだけさせる場合は存在しないホスト・ポートを指定すればよい
- tunnel="n" ssh vpn 接続を許容するかどうか(tunによるsshvpnの接続は別機会に書きます)
Puttyの設定&接続
putty.exe,puttygen.exeをダウンロードする。
ssh-keygenで生成した、id_rsaキーをputtygen.exeにて開く。
"Save private key"にてputty用に変換されたキーを保存。
putty.exeを実行し、 Category->Connection->SSH->Authのprivate keyに生成したキーの場所を指定。ホスト・ポート・ユーザー名等を設定後、接続ができればOK
local・remoteのポートフォワーディングは便利で手放せない。またputty自体はレジストリに接続情報を保存するので、別環境で同様な設定を移行するのが面倒だ。これを解決するのが[portaputty]である。単純に設定ファイルを.puttyディレクトリに保存してくれるだけで他は通常のputtyと同機能だ。
WinsSCPの設定&接続
winScpのリンクからダウンロードし、インストールを行う。
後は、ユーザー名・パスワードもしくはprivate keyを設定し、puttyと同様にホスト名・ポートを指定するだけでよくあるFTPのguiソフトと同様な画面が現れる。後はDND経由でもファイルupload&downloadが可能だ。pscp.exeというputtyのツールもあるのだが、これはコマンドラインインターフェイスなのでバッチで処理を組むときに便利だ。
Tipsなど
sshを使用する際、rsa/dsa鍵認証でパスフレーズつきで運用している。これはセキュリティ的には良いが、バッチなどで処理の自動化を行いたい場合passphraseに対応したソフトでないといけない。Antやputty.exeなどはパスフレーズに対応しているので非常に便利だ。