CentOSには最初からOpenSSHと呼ばれるSSH用サーバ・クライアントプログラムのパッケージが含まれています。OpenSSHのサーバプログラムはsshdです。
[hoge@localhost hoge]# rpm -qa | grep ssh openssh-server-3.9p1-8.RHEL4.9 openssh-3.9p1-8.RHEL4.9 openssh-askpass-gnome-3.9p1-8.RHEL4.9 openssh-clients-3.9p1-8.RHEL4.9 openssh-askpass-3.9p1-8.RHEL4.9
[hoge@localhost hoge]$ rpm -ql openssh-server /etc/pam.d/sshd /etc/rc.d/init.d/sshd /etc/ssh /etc/ssh/sshd_config /usr/libexec/openssh/sftp-server /usr/sbin/sshd /usr/share/man/man5/sshd_config.5.gz /usr/share/man/man8/sftp-server.8.gz /usr/share/man/man8/sshd.8.gz /var/empty/sshd
このパッケージに含まれているsshdの設定ファイルは/etc/ssh/sshd_c onfigです。
sshデーモンが動いているかどうか確認します。
[hoge@localhost hoge]$ ps aux | grep sshd pori 14795 0.1 0.4 7844 2284 ? S 15:04 0:06 sshd: pori@pts/2
デーモンが動いてない人は起動スクリプトから起動しましょう。
[root@localhost root]$ /etc/init.d/sshd 使い方: /etc/init.d/sshd {start|stop|restart|reload|condrestart|status}
動かない人は/var/log/messageのエラーログメッセージを参考にして対処してください。
PuTTYはWindows用のsshクライアントプログラムです。
ノートPCを使って各自のサーバマシンのSSHサーバにアクセスしてみます。
同じローカルネットワーク内なので、踏み台サーバの経由はせずにダイレクトにアクセスします。
カテゴリ | 設定項目 | 値 |
---|---|---|
セッション | ホスト名 | 192.168.10.1xx(『xx』にはマシン番号が入ります) |
ポート | 22 | |
プロトコル | SSH | |
変換 | 受信されるデータの文字セット変換 | UTF-8(CJK) |
接続 | 自動ログインのユーザ名 | 自分で作った一般ユーザ名 |
以上の設定ができたら、一度セッションに戻って、保存してください。
新たに作ったセッションをダブルクリックして接続します。
puttygenを起動して秘密鍵保存します。
SSH/SCPの使い方 -> 鍵の生成
http://rat.cis.k.hosei.ac.jp/article/rat/ssh.html.ja#na-1
次に公開鍵を登録するのでWebサーバで公開します。
パスワード認証でログインした自分のサーバにコピーアンドペーストで貼り付けます。
cd /usr/local/httpd/htdocs/ vi public_key.txt
公開鍵をアップロードできたら、次へ進みます。
外から直接アクセスすることはできないので、踏み台サーバ(step.cis.k.hosei.ac.jp)を経由してアクセスします。
リテラシ環境では以下のようなポートフォワードを行います。
ポートフォワード:localhost:10022 -> 踏み台サーバ -> 自分のサーバマシン:22
踏み台マシンにログインするためのPuTTYの設定を行います。
今回は個人ごとのユーザを作成せず、サーバリテラシ用にメンバで同じユーザ:hogeを使用します。
カテゴリ | 設定項目 | 値 |
---|---|---|
セッション | ホスト名 | 133.25.236.120 |
ポート | 22 | |
プロトコル | SSH | |
変換 | 受信されるデータの文字セット変換 | UTF-8(CJK) |
接続 | 自動ログインのユーザ名 | hoge |
接続-SSH-認証 | 認証のためのプライベートキーファイル | 自分の秘密鍵を指定してください |
接続-SSH-トンネル | 源ポート | 10022 |
送り先 | [192.168.10.1xx]:22 |
※送り先、のチェックはローカルです。
※トンネルの部分は値を入れたら追加ボタンを押してください。
以上の設定ができたら、一度セッションに戻って、保存してください。
新たに作った踏み台へのセッションをダブルクリックして接続します。
上記のPuTTYのアクセスで次のような接続が可能となります。
ノートPC(localhost):10022 -> 踏み台サーバ -> 自分のサーバマシン:22
ポートフォワードをしているので、接続先のホスト名はlocalhostでポート番号は設定した10022になります。
新しくPuTTYを起動してください。
カテゴリ | 設定項目 | 値 |
---|---|---|
セッション | ホスト名 | localhost |
ポート | 10022 | |
プロトコル | SSH | |
変換 | 受信されるデータの文字セット変換 | UTF-8(CJK) |
接続 | 自動ログインのユーザ名 | 自分で作った一般ユーザ名 |
以上の設定ができたら、一度セッションに戻って、保存してください。
この時点でPuTTYは、「踏み台サーバ」と「各自のサーバマシン」の2つの接続を行っています。踏み台サーバのPuTTYを終了すると各自のサーバマシンへの接続は切断されてしまいますので注意してください。
[hoge@localhost hoge]$ mkdir ~/.ssh [hoge@localhost hoge]$ vi ~/.ssh/authorized_keys
『 i 』を押して、viを『インサートモード』にします。公開鍵をコピーし、vi上でマウスの右クリックで貼り付けます。
このとき、インサートモードで貼り付けが行われていないと、正しく公開鍵が貼り付けられません。貼り付けた鍵の先頭が『ssh…』で始まっていることを確認してください。
※ 『 ~ 』はユーザのホームディレクトリを指します。
.sshフォルダには公開鍵以外にも利用方法によっては重要なファイルが配置されるため、パーミッションのチェックが厳しいです。次のように所有者以外のユーザアクセスができないようにしないと公開鍵認証方式でのログインが拒絶されます。
[hoge@localhost hoge]$ chmod 700 ~/.ssh [hoge@localhost hoge]$ chmod 600 ~/.ssh/authorized_keys
安全にsshdを運用できるように設定を変更する必要があります。設定ファイルで『 # 』を先頭につけるとコメントアウトすることができます。コメントアウトされている設定はデフォルトの設定です。
デフォルトではrootのログイン等を許可しているので、設定を変更する必要があります。
デフォルトのSSHサーバの設定は、以下の点でセキュリティ上問題があるので変更してください。
設定 | 値 | 説明 | 問題点 |
---|---|---|---|
PermitRootLogin | yes/no | rootでのログインを許可するかどうか | 直接rootユーザのパスワードを解析される可能性がある |
PasswordAuthentication | yes/no | パスワードログインを許可 | 許可した場合、公開鍵を使用しなくてもログインできる |
ChallengeResponseAuthentication | yes/no | チャレンジ・レスポンス認証を許可 | 推奨されていない |
sshdデーモンの設定ファイルは/etc/ssh/sshd_configです。設定を編集する前にバックアップを取っておいてください。
[root@localhost root]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default [root@localhost root]# vi /etc/ssh/sshd_config
次の様に変更します。
PermitRootLogin no PasswordAuthentication no ChallengeResponseAuthentication no
変更した設定を反映するにはsshdデーモンを再起動する必要があります。
[root@localhost root]# /etc/init.d/sshd restart
公開鍵の登録に失敗している可能性もあるので、現在のターミナル(PuTTYのウインドウ)を閉じないでおいて、新しくPuTTYのウインドウを開きましょう。
上での設定に加えて、秘密鍵の指定を追加したセッションを作る。
カテゴリ | 設定項目 | 値 |
---|---|---|
セッション | ホスト名 | localhost |
ポート | 10022 | |
プロトコル | SSH | |
変換 | 受信されるデータの文字セット変換 | UTF-8(CJK) |
接続 | 自動ログインのユーザ名 | 自分で作った一般ユーザ名 |
接続-SSH-認証 | 認証のためのプライベートキーファイル | 自分の秘密鍵を指定してください |
以上の設定ができたら、一度セッションに戻って、保存してください。
公開鍵認証方式でのログインが成功した場合は、次のように出力されます。
login as: user1 Authenticating with public key "user1@localhost" Passphrase for key "user1@localhost":
user1はログインする一般ユーザ名。