sshはtelnetに比べると通信が暗号化されている分だけセキュアだが、ユーザ名とパスフレーズによる認証だけだと破られる危険がある。インターネットから接続できるサーバではこれはとても危ない。よってホスト認証を使い、特定のクライアントからしか接続できないようにする必要がある。
sshクライアントとしてはTTSSHを使う。これ単体でキーの生成もできてしまうので便利。
【キーの生成】
まずはじめに、秘密鍵と公開鍵のペアを生成する。
①TTSSHの設定>SSHキー生成メニューを選ぶ。
②キーの種類はデフォルトのRSAでいいと思う。
③生成ボタンを押す
④キーのパスフレーズを入力する。これは接続先のサーバのパスワードとは関係なく、このキーを不正に使われないためのもの。
⑤公開鍵の保存ボタンと、秘密鍵の保存ボタンを1回ずつクリックする。
⑥TTSSHのフォルダにid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が出来ていることを確認する。
秘密鍵は人に知られてはいけない。またこれを消してしまうとssh接続が出来なくなるので厳重に管理する。
【サーバへの公開鍵の登録】
サーバ(Linux)に先ほど生成した公開鍵を登録する。
①ホームディレクトリに.sshというディレクトリを作り、パーミッションを700とする。
②.sshの中にauthorized_keysというファイルをつくり、パーミッションを600とする。
③authorized_keysのファイル内に、先ほど生成した公開鍵の中身を転記する。ただし最後の部分がユーザ名@ホスト名となっているので、ユーザ名に書き換える。
以上で設定は終わり。つなげてみよう。
【TTSSHからの接続】
①ファイル>新しい接続メニューを選択
②ホスト(サーバのIP)、TCPポート(22)、サービス(SSH)、SSHバージョン(SSH2)を指定してOKボタンを押す。
③ユーザ名(接続先サーバにおけるユーザ名)、パスフレーズ(秘密鍵のパスフレーズ)、RSA/DSA鍵を使う、秘密鍵(先ほど生成したid_rsaを選択)を入力して、OKをクリック。プレインテキスト認証の時とはパスフレーズの意味が変わっているので注意。
これで接続が出来ることを確認したら、もともとのプレインテキスト認証を不許可にしよう。rootになって/etc/ssh/sshd_configを編集して、PasswordAuthentication yesの行をPasswordAuthentication noと変えて保存する。そうしてservice sshd reloadとすると反映され、ユーザ名/パスフレーズではログインできなくなっているはず。