この記事は WESEEK Advent Calendar 2020 8日目の記事です。
業務で、初めてSSHにふれる機会があったので、まとめてみることにしました。
SSHとは
SSHとは Secure Shell の略で、ネットワークに接続された別のコンピューターをリモートで操作するための方法のことです。自分のPCから遠方にあるサーバーコンピューターを操作する時によく使われます。
TelnetやFTPとの違い
SSHと似たものに、TelnetやFTP(File Transfer Protocol)があります。ただ、サーバーに送る情報を暗号化せずにそのまま送信するので、セキュリティ的に危険です。
対して、SSHは情報を暗号化し送信するので、セキュリティに強いと言われています。これが、secureと呼ばれる理由です。
SSHの認証方式
SSHを使って別のコンピューターをリモートで操作するためには、認証を行う必要があります。
認証方法は以下の2つ
- パスワード認証方式
- 公開鍵認証方式
1. パスワード認証方式
ユーザー名とパスワードを予め決めておき、サーバーに接続する際にこれらを使ってログインする方法です。
以下の特徴があります。
メリット
- 馴染み深く、ログインが簡単
デメリット
- 管理者が単純なパスワードを設定してしまったり、同じパスワードを使い回ししてしまったりすると、万が一パスワードが知られてしまったときに不正にログインされてしまう危険性があります。
2. 公開鍵認証方式
この仕組みを導入することで、秘密鍵を持った人のみがsshログインできるようにします。
検証に合格すれば、「認証成功」と判断し、リモート接続を許可すると言った流れです。
以下の特徴があります。
メリット
- パスワード総当り攻撃などで第三者に不正にsshのログインを試みられても、破られる可能性が「パスワード認証方式」よりも低い
デメリット
- 鍵を作成したり管理する手間がかかる。
秘密鍵 / 公開鍵の確認方法
SSH 鍵が既に生成されているかを確認するために、以下を実行する
ls -al ~/.ssh
秘密鍵 / 公開鍵はユーザーディレクトリの./ssh
ディレクトリに保管される。
## 秘密鍵 / 公開鍵の生成方法
以下を実行する
1.秘密鍵と公開鍵の作成コマンドを実行
ssh-keygen
2.鍵の保存名を設定
特に指定がなければEnterを押す
Enter file in which to save the key (/Users/(ユーザーID)/.ssh/id_rsa):
3.パスフレーズを設定する
何も入力せずにEnterを押すと、パスフレーズなしの鍵となる
Enter passphrase (empty for no passphrase):
# Enter the same passphrase again:
鍵の作成完了!
この後、/Users/(ユーザーID)/.ssh
ディレクトリに移動し、ls
で確認すると id_rsa
と id_rsa.pub
という2つのファイルが作成されているのが確認できます。
-
id_rsa
(秘密鍵) -
id_rsa.pub
(公開鍵)
サーバーに公開鍵を置く
※ 今回はmacのターミナルからubuntu 14.04.2に接続しました
1.公開鍵認証によるSSH接続
$ ssh -i ~/.ssh/id_rsa <ユーザ名>@<IPアドレスもしくはホスト名>
2.公開鍵の配置
.ssh
ディレクトリ配下にある authorized_keys
ファイルにおく
これで、公開鍵をアクセスしたいサーバーに置くことができます。
まとめ
- SSHとは別のコンピューターにリモートでアクセスする時に使うプロトコル
- TelnetやFTPとは違ってデータが暗号化されるのでセキュリティ的により安全
- SSHの二つの方式のうち「パスワード認証方式」よりも安全な「公開鍵認証方式」を使うようにしましょう!
※この記事は WESEEK Tips wiki に 2020/12/ に投稿された記事の転載です。
Tips wiki では、IT企業の技術的な情報やプロジェクトの情報を公開可能な範囲で公開してます。