初めて接続する瞬間に何が起きているか
初めて新しいサーバーに接続すると、SSHはそのサーバーのホスト鍵のフィンガープリントを表示し、続行する前に確認を求めます。これは中間者攻撃によって知らないうちに偽のサーバーへすり替えられていないかを防ぐための仕組みです。一度受け入れるとそのフィンガープリントはローカルに保存され、以後もし内容が一致しなければ(例えば誰かが接続を傍受している場合など)、黙って接続する代わりに強い警告が表示されるようになります。
SSHを格段に楽にする設定ファイル
毎回長いユーザー名・ホスト名・ポート番号・鍵ファイルを入力する代わりに、~/.ssh/configファイルを使えば各サーバーに短いエイリアスを一度だけ設定しておき、以降は「ssh myserver」と打つだけで接続できます。複数台のサーバーに定期的に接続するようになったら、すぐに元が取れる小さな設定作業です。
SCPとSFTP、FTPとの違い
SCPやSFTPはSSHの暗号化された接続上でファイルを転送する仕組みです。昔ながらのFTPは、認証情報を含む通信を暗号化しないまま送るため、現在では安全が求められる用途にはあまり使われません。なお、SCPは従来のプロトコルに構造的な弱点があったことから、近年のOpenSSHではSFTPの仕組みを内部で使う方向に変わってきています。ファイル転送が目的なら、SFTPやrsync over SSHを選ぶのが無難です。
接続できないときの確認手順
接続に失敗したときは、まずサーバーのアドレスとポート番号が正しいか、ファイアウォールやクラウドのセキュリティグループで22番ポート(または変更後のポート)が許可されているかを確認します。次に、「ssh -v」とオプションを付けて詳細ログを表示すると、どの段階で失敗しているかが分かります。公開鍵認証が通らない場合は、ユーザー名、鍵の指定、権限の設定を順に見直すのが近道です。
よくある質問
SSHの標準ポート(22番)を変えると、より安全になりますか?
ポートを変えても根本的なセキュリティレベルが上がるわけではありませんが、22番ポートを無差別にスキャンして接続を試みる自動化された攻撃を減らす効果はあります。あくまで補助的な対策であり、パスワードログインを無効化して公開鍵認証のみを許可するといった根本的な設定のほうがはるかに重要です。
SSHとVPNは同じものですか?
いいえ、それぞれ目的が異なる技術です。SSHは特定のサーバーやサービスへの接続・トンネリングに焦点を当てているのに対し、VPNは一般的に機器のネットワークトラフィック全体(またはその大部分)を暗号化された経路にルーティングする、より広い範囲を扱う技術です。
SSHの鍵をなくしてしまった場合はどうなりますか?
秘密鍵を紛失しても、別の鍵ペアを作成し、パスワード認証やコンソールなど別の手段でサーバーにログインして、新しい公開鍵をauthorized_keysに追加すれば再び接続できます。ただし、紛失した鍵が第三者の手に渡った可能性がある場合は、古い公開鍵をサーバーから削除することが重要です。クラウドによっては、管理画面から鍵を差し替える機能も用意されています。
同じ鍵を複数のサーバーで使い回してもいいですか?
技術的には可能ですが、1つの鍵が漏れたときの影響範囲が大きくなります。用途ごと、または端末ごとに鍵を分けておけば、問題が起きたときに特定の鍵だけを無効にできます。管理の手間とのバランスを考えて決めましょう。
Windowsでもsshコマンドは使えますか?
最近のWindowsにはOpenSSHクライアントが標準で組み込まれていることが多く、コマンドプロンプトやPowerShellからsshコマンドを使えます。利用できない場合は、設定のオプション機能からOpenSSHクライアントを追加するか、PuTTYなどの専用ソフトを利用する方法があります。