OpenSSH
今日はOpenSSH。暗号化通信ね。まぁTELNETは平文で送られるからやめようねってことで。
まずはインストールの確認
#rpm -qa | grep ^openssh ⇒ 先頭がopensshのrpmパッケージの検索。
アップグレードされてたら
#rpm -Fvh /ディレクトリ/openss* ⇒ Fvh 新しいバージョンだったら上書き。
依存ファイルもあるので、openss*で複数インストール。
OpenSSHサーバーの起動
#/etc/init.d/sshd start
設定ファイル
/etc/ssh/sshd_config ⇒ SSHサーバー用
可能であれば、#port_22を変更するのがいい。
自動的にポート22へ接続しようとするツールがよくあるので。
/etc/ssh/ssh_config ⇒ クライアント用
ファイル変更後はサーバーリスタート。
SSHサーバーに接続
$ssh ユーザー名@接続先ホスト
ex
$ssh test@abc.net
ポートが変更されている場合、
$ssh -p ポート test@abc.net
ホスト認証
最初の接続時、接続先ホストを承認するか聞かれるので、yes。
そうすると、ホストから認証鍵が~/.ssh/known_hostsファイルに保存される。
ホスト認証の次はユーザー認証
/etc/passwd(/etc/shadow/)に保存されているパスワードを使って認証する。
つまりホストにはあらかじめ接続するユーザーを作成していなければいけない。
SSHサーバーへのアクセス制限
/etc/hosts.allow
/etc/hosts.deny
へ記述。
SSHサーバー自体はアクセス制限の機能を持っていないので、ファイルで管理する。
ex.
/etc/hosts.allow
sshd : 172.16.1.1/255.255.0.0 とか
sshd : abc.net とか
sshd : 192. とか
sshd : 127. とか ← ローカルを許可
まとめて
sshd : 172.16.1.1/255.255.0.0,abc.net,192.,127. とか
/etc/hosts.deny
sshd:all とか
ALL:ALL
注意、denyファイルに該当しなければ許可されてしまうので、全部拒否した方が無難。
公開鍵認証
クライアントに公開鍵と秘密鍵を作成する。
$ssh-keygen -t dsa ⇒ dsa方式で鍵作成
$ssh-keygen -t rsa ⇒ rsa方式で鍵作成
保存先など、特に指定しなければ
パスフレーズを聞いてくるので、忘れないように入力。
認証のとき、秘密鍵を有効にする際に使われます。
で成功すると
~/.ssh/id_dsa ⇒ 秘密鍵
~/.ssh/id_dsa_pub 公開鍵
が作成される。
注意 id_dsaのパーミッションはパーミッション600で作成されるが、まちがって削除しないように400に変更しておくといい。
次に、なんらかの方法でサーバーに公開鍵を保存する。
最初に接続できた時点で、scpやsftpなどを使ったり、フロッピーやUSBで直接サーバーに持っていく。
通常はログインするユーザーのホームディレクトリ以下に/.ssh/をパーミッション700で作成し、保存する。
んで、
$ cat ~/.ssh/id_isa_pub >> ~/.ssh/authorized_keys2
で追加していく。このファイルも664⇒644にしておくといい。
次回接続すると、パスフレーズを聞いてくるので、先ほど入力したフレーズを入力して認証。
成功すれば接続完了。
公開鍵認証の方が手間はかかるが、ホストのなりすましを防ぐことができていい。