- 追加された行はこの色です。
- 削除された行はこの色です。
- Debian4.0/sshのインストール は削除されています。
*sshのインストール
#contents
**インストール
-リモートからとりあえず作業ができるように導入。
# aptitude install ssh
これでクライアント(ssh)とサーバ(sshd)が利用できる。
-デフォルトではrootでもログインできるようになっているので、これを禁止。一般ユーザでログインしてsuすべき。
--設定ファイル:/etc/ssh/sshd_config
<pre>
PermitRootLogin &color(red){without-password}; パスワードログインを禁止
</pre>
**アクセス制限(TCP_Wrapper)
-最近、sshdに対するポートスキャンが増えている。
--設定ファイル:/etc/hosts.allow (アクセスを許可するサービス名と接続元IP)
ALL : 192.168.XX, 127.0.0.1
sshd : 192.168.XX &color(green){# 192.168.0.0/24からのアクセスを許可};
--設定ファイル:/etc/hosts.deny (hosts.allowに該当しなかったものは全て拒否)
ALL : ALL
**パスワード認証
-パスワードを用いたログイン方式
公開鍵と秘密鍵の鍵ペア用いてパスワードを受け渡す。
「公開鍵で暗号化したデータは、秘密鍵でしか復元化できない」という性質を利用。
-ログインまでの処理
+クライアントは ~/.ssh/known_hosts に保存されているサーバ側の公開鍵を使用
保存されていない場合は、サーバに公開鍵の取得を要求し ~/.ssh/known_hosts に記録する
+クライアント側で乱数列を生成
+この乱数列をサーバの公開鍵で暗号化
+サーバに暗号化データを送信
+サーバは受け取ったデータを秘密鍵で復元化
(サーバの公開鍵 /etc/ssh/ssh_host_rsa_key.pub)
(サーバの秘密鍵 /etc/ssh/ssh_host_rsa_key)
+復元したデータをクライアントに送り返す
+クライアントは最初に生成した乱数列と送り返されたデータを比較
+一致すれば正しいホスト
+その後、通信内容を暗号化する共通鍵を作成し暗号化通信を行う
**OpenSSH4.0からの変更点
-クライアントにおいて、サーバの公開鍵が保存される ~/.ssh/known_hosts が
ハッシュ値を用いて記録するように変更。
そのため、サーバの公開鍵が変更になった時など、エントリがわからず削除できない。そこで次のコマンドを使用。
--ホスト名 or IPアドレスによる known_hostsファイルのエントリの検索
# ssh-keygen -F XXXXX.co.jp
--ホスト名 or IPアドレスによる known_hostsファイルのエントリの削除
# ssh-keygen -R XXXXX.co.jp
-ハッシュ値を用いない記録に戻すには以下をnoに変更する。
--設定ファイル:/etc/ssh/ssh_config
HashKnownHosts yes
**公開鍵認証
-公開鍵とパスフレーズを用いたログイン方式。
クライアント側で公開鍵と秘密鍵の鍵ペアを作成し、サーバ側にその公開鍵を事前に登録しておく。
-公開鍵と秘密鍵の作成
# ssh-keygen -t rsa
実行途中にパスフレーズの入力が求められるので、パスワードとは異なる言葉を入力する。
作成された公開鍵は、 ~/.ssh/id_rsa.pub
作成された秘密鍵は、 ~/.ssh/id_rsa
-公開鍵の転送
公開鍵をログインするサーバのユーザディレクトリへコピー
<pre>
# ssh-copy-id -i .ssh/id_rsa.pub '''username'''@'''remotehost.co.jp'''
</pre>
サーバの '''username'''/.ssh/authrized_keys ファイルに追加される
-デフォルトではパスワード認証が有効になっているので、パスワード認証を無効にする。
--設定ファイル:/etc/ssh/sshd_config
PasswordAuthentication no
-パスワード認証が有効でも公開鍵認証によるログインが可能。
<pre>
# ssh -i ~/.ssh/id_rsa.pub '''username'''@'''remotehost.co.jp'''
</pre>
**鍵の種類
-SSHには公開鍵暗号に基づく2つの認証方式(RSA,DSA)がある。
-SSHプロトコル1はRSAのみ、SSHプロトコル2はDSAのみだが、RSAが特許期限切れになってからOpenSSHはSSHプロトコル2にRSAを追加。
|鍵の種類|公開鍵ファイル|秘密鍵ファイル|
|SSH1 RSA| ~/.ssh/identity.pub| ~/.ssh/identity|
|SSH2 RSA| ~/.ssh/id_rsa.pub| ~/.ssh/id_rsa|
|SSH2 DSA| ~/.ssh/id_dsa.pub| ~/.ssh/id_dsa|
**ポートフォワーディング
-SSHによるポート転送によって経路の暗号化を行うことができる。
(実行例)ローカルホストのポート1234がhostAのポート22につながるようにポートフォワーディングを行う。
# ssh -N -f -L 1234:hostA:22 user@hostA
-N : リモートでコマンドを実行しない
-f : バックグラウンドで実行