BLOG

【Linux研修】おはじきの記録12

こんにちは、おはじきです。
インフラエンジニアとしてサーバーの運用保守の仕事などをしていると、サーバーに直接ディスプレイやキーボードをつないで操作するというよりも、離れた場所から別のPCでリモートで接続をしてサーバーを操作するというパターンが多いかと思います。
今回は離れたPC(以後ホストと呼びます)同士でのリモート接続を実現するSSHというプロトコルについて、Lpic102試験対策の観点からお話していきます。

SSH

SSH(Secure Shell)はネットワーク経由でホストを遠隔操作できるプロトコルです。
SSHのように遠隔操作ができるプロトコルにtelnetというものがあるのですが、
こちらは通信内容がすべて平文でやりとりされるため、
もし通信を盗み見られでもしたら内容だけでなくパスワードなども
盗まれてしまう危険性があるので今ではあまり使われていません。
それに対しSSHは通信内容が全て強固に暗号化されており、secure(安全)な通信を実現しています。

早速実際にLinuxから別のLinuxのホストへログインしてみましょう。
LinuxではOpenSSHというソフトが標準で入っているので基本的なリモートログインをする上で何かをインストールしたりする必要はありません。
Linux同士でのリモートホストへのログインは基本的にsshコマンドを用いて行います。
書式: ssh [オプション] [ログインユーザー名@ホスト名もしくはIPアドレス]
ログインユーザー名は省略することもできます。
主なオプションはこちらです。

-pポート番号を指定
-lログインユーザー名を指定
-i秘密鍵ファイル秘密鍵ファイルを指定

ssh ohajiki@ohajikiRemote
と入力しましたがこれはohajikiRemoteというホストにohajikiというユーザー名でログインしますよという意味ですね。
なにやら長い英文が書かれていますがこれは最初にログインする時にホスト認証用の公開鍵を作成しますか?と聞かれyesと答えた後パスワードを入力してログインしたという処理が行われています。

sshにはホスト認証と呼ばれる機能が備わっています。
これからリモートログインしようとしているサーバーが本当に意図したものと合っているのか、なりすましを予防するための認証です。
上記の初回ログイン処理をするとリモートログインされた側(サーバー)からする側(クライアント)に対してホスト認証用の公開鍵と呼ばれる固有のデータが送信されます。
この公開鍵はクライアントの~/.ssh/known_hostsというファイルに記述されます。
公開鍵をログインする時にサーバーとクライアント同士で照らし合わせることによって意図したサーバーに確実にログインできているという証明になります。

この公開鍵を作成するアルゴリズムにいくつか種類があり、
dsa,rsa,ecdsa,ed25519の4種類が現状主に扱われています。
サーバー側で公開鍵の確認がしたければ/etc/ssh/ssh_host_暗号形式_key.pubのファイルから閲覧できます。
暗号形式と書いてあるところに ecdsaやed25519などのアルゴリズム名が入ります。

最後に

今回はLinuxでsshを用いてリモートログインをする過程を解説しました。
次回はもう少し込み入った部分に踏み込んで解説する予定です。
ssh接続するだけなら思ったより簡単なのですが、どういう仕組みで接続できているのか知っておいた方がいざとなったときに柔軟な対応ができるかと思います。
難しい話になってきますが頑張って一緒に勉強していきましょう。
それでは。

BLOGトップへ戻る