TeraTermで 公開鍵認証(鍵交換)を使ってSSH 接続してみる
今回は、TeraTermで 公開鍵認証を使ってSSH 接続してみます。
SSH には、ユーザ認証機能として、以下の種類があります。
- rhost認証
– ~/.rhostsファイルや/etc/hosts.equivファイルによる認証方法で、パスワードなしでログインなどを可能にするもので危険であるため通常は利用されません。
- パスワードによる認証
– 非常に一般的に用いられてきた認証方法で、パスワードの文字数が短ければ非常に危険であるため最近ではパスワード文字数を12文字以上とすることが多いです。
- RSA 認証
– バージョン1による公開鍵、秘密鍵のペアによる認証方式で、バージョン1ではセキュアな認証方式です。
- 公開鍵認証
– バージョン2による公開鍵、秘密鍵のペアによる認証方式で、バージョン2ではセキュアな認証方式です。
上記以外にも rhost + RSA認証など組み合わせを含めてるとまだまだありますが、概ね手順でくくると上記の4つのパターンだと思います。
上記の順は、より危険な順でならべたつもりです。運用によっては、危険度も違うでしょうが、一般的には上記の順とされ、パスワードのみで管理することは危険とされています。
よりセキュアな方式として、RSA 認証、公開鍵認証があります。
RSA 認証も公開鍵認証も手順的には同じですが、鍵の作成方法が異なります。もちろんバージョンの違いも大きく、できればバージョン1は使いたくないところです。
そこで、今回は、公開鍵認証方式による鍵ファイル+パスフレーズ(パスワード)での認証について簡単に解説してみます。
TeraTermで 公開鍵認証を使ってSSH 接続してみる
- TeraTermを起動し、SSH鍵を作成します。
TeraTermを起動し、
メニュー の [ 操作 ] – [ SSH鍵作成… ] をクリックします。
鍵の種類 : RSA を選択し、ビット数 : 2048 でOKです。作成ボタンをクリックします。
SSH2では、DSAとRSAの両方を利用できるように設計されています。
DSAとRSAの違いは、
DSAが、ユーザ認証しかカバーしないのに対して、
RSAは、ユーザ認証、通信の暗号化をカバーする点です。
そもそもRSAには特許があったため自由に使用できなかったので、DSAを使っていたという経緯があります。
現在では、SSH2ではRSAを使うのが主流です。
下記の鍵のパスフレーズ欄、パスフレーズの確認欄 が 、それぞれ入力可能な状態になります。
ここでパスフレーズを入力します。両欄とも入力したら、公開鍵の保存、秘密鍵の保存 にてファイルに保存します。
ここでパスフレーズを何も入力しない場合は、以降に出てくるログイン時にパスフレーズ(パスワード)の設定は不要となります。
よく「パスワードなしでSSH接続する」などの記事を見かけますが、それは、このパスフレーズなしで公開鍵認証を行うパターンの記事です。
ここでは、
- 公開鍵 : id_rsa.pub
- 秘密鍵 : id_rsa
で保存したものとして、以降、解説します。
ssh-keygen コマンドでも鍵を作成できます。
ssh-keygen コマンドでの作成方法は、
こちら を参照してください。
- 接続先SSHサーバー側に 公開鍵 を設定します。
TeraTermで作成した公開鍵 を接続先SSHサーバー側にコピーします。
設定するファイル名は、
/ユーザホーム/.ssh/authorized_keys
で作成します。
ここでは、hoge という名前のユーザで解説してみます。
/home/hoge/.ssh/authorized_keys
ssh-rsa AA........PQ== hoge@windows
|
公開鍵は、単純なテキストファイルなのでコピー&ペーストでファイルを作成してもOKです。また、SFTPなどでアップロードしてもOKです。
コピーを終えたら、公開鍵の権限を所有者のみ読み込み可(400)とします。
$ chown -R hoge. /home/hoge/.ssh/
$ chmod 400 /home/hoge/.ssh/authorized_keys
|
- 接続先SSHサーバーの SSHの設定を変更します。
接続先SSHサーバーの SSHの設定を 公開鍵認証を可とし、パスワードによる認証を不可とします。
/etc/ssh/sshd_config
...
# プロトコルバージョンを2固定とします。
Protocol 2
...
# rhost RSA認証を不可にします。
RhostsRSAAuthentication no
# host based 公開鍵認証を不可にします。
HostbasedAuthentication no
# /etc/ssh_known_hosts または ~/.ssh/known_hosts を無視します。
IgnoreUserKnownHosts yes
# rhost を無視します。
IgnoreRhosts yes
...
# RSA認証を不可にします。
RSAAuthentication no
# 公開鍵認証を可にします。
PubkeyAuthentication yes
# 公開鍵の設置場所をユーザディレクトリ配下の .ssh/authorized_keys にします。
AuthorizedKeysFile .ssh/authorized_keys
# 公開認証時のコマンドは実行しません。
AuthorizedKeysCommand none
# 公開認証時のコマンド実行時のユーザは、nobodyとします。
AuthorizedKeysCommandRunAs nobody
...
# パスワード認証を不可とします。
PasswordAuthentication no
# 空パスワードを不可とします。
PermitEmptyPasswords no
...
|
ここでは、念のため不必要な認証は、すべて不可にしています。
ここで最小限必要な項目は、以下のものです。
- PubkeyAuthentication yes
- AuthorizedKeysFile .ssh/authorized_keys
- PasswordAuthentication no
設定を終えたら、sshd の再読み込みか、再起動します。
$ /etc/init.d/sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
|
- TeraTermから接続してみます。
ここまで設定を終えたら、TeraTermから接続してみます。
TeraTermを起動します。
ホスト名 : ここではIPアドレスを単純に入力しています。ホスト名でも可です。
TCPポート番号 : ここではデフォルトの22をそのまま使用します。SSH側で変更している場合は、そのポート番号に合わせます。
サービス : SSH バージョンは、SSH2 とします。
設定を終えたら、OKボタンをクリックします。
ユーザ名 : ここでは hoge とします。
パスフレーズ : ここでは鍵を作成した時に入力したパスフレーズを入力します。
RSA/DSA鍵を使う : 秘密鍵 に作成した秘密鍵ファイル名を入力します。
設定を終えたら、OKボタンをクリックします。
以下のようにログインできればOKです。
この状態で、ユーザ名、パスワードのみでログインしようとすると以下のようなエラーメッセージが表示されログインできないことも確認しておきましょう。
[自動化するマクロ]
TeraTermではマクロを使ってログインを自動化できます。
以下に簡単ながらマクロファイルのイメージを載せておきます。
; SSH login
; 受信コード UTF-8/送信コード UTF-8 とします。
callmenu 54013 ; [KanjiCode] Recv: UTF-8
callmenu 54113 ; [KanjiCode] Send: UTF-8
; 接続します。
connect '192.168.1.99:22 /ssh2 /auth=publickey /user=hoge /passwd=******** /keyfile=id_rsa'
|
/passwd=******** の “*” 部分は、鍵作成時に設定したパスフレーズを記述します。
このマクロファイルは、パスワードは平文で、秘密鍵のファイルの在りかも指定しますから、これが覗かれたら時のリスクを十分考慮した上で、自動化をしましょう。
せめて、ログインユーザ以外は、参照できないくらいの設定は必要だと思います。
うまく接続できたでしょうか。
この設定により、ユーザ+パスワードのみ場合に比べて安全になることは間違いないです。セキュリティに関しては、やれることはやっておいて損はありませんから、是非、やっておきましょう。
また、おまけですが、お名前.com VPS(KVM)では、SSH Keyファイルをダウンロードできます。
- SFTPでISOファイルをアップロードする場合
- SSH接続経由でシリアルコンソールへ接続する場合
に使えます。また、デフォルトOSの場合は、VPSへの root による SSH接続 のためにも使用できます。(ConoHaでは、デフォルトでこの鍵認証になります)
但し、これって、デフォルトOS(CentOS)の場合のみ使用できる鍵ですから、注意しましょう。カスタムOSや、ISOアップロードで好きなOSをインストール場合は、使えません。
ちょっと参考まで。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
関連記事 :
コメントを投稿 :