SSHってよく聞くけど一体何なんだろう、と思っている方、意外に多いんじゃないかと睨んでいます。少なくとも自分は長年「なんか怖いから手ぇ出さんとこ」とスルーを決め込んできました。
もったいないことした!!
確かにFTPに比べると面倒なことも多いですが、SSHにはすごいメリットがいろいろあります・・・いや、あるみたいです。よくわからないままごく一部の機能のみ使っていますが、それでもなんで昔からSSHを使ってこなかったのか悔やまれるぐらい時短効果がありました…。未体験の方はぜひこれを機に使って頂けたらと思います。
そもそもSSHってなんですのん
SSHは「Secure Shell(セキュアシェル)」の略称らしい。
Secure Shell(セキュアシェル、SSH)は、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。(中略)SSHの暗号通信は、鍵交換アルゴリズム(ディフィー・ヘルマン鍵共有など)を用いて共通鍵暗号で使用するセッション鍵を生成し、共通鍵暗号(トリプルDES、AESなど)を用いて通信を暗号化し、公開鍵暗号(RSAやDSA)を用いてホスト認証・・・・
https://ja.wikipedia.org/wiki/Secure_Shell
・・・へぇ~
ちょっと読むのにハードルが高い文章だったのでついついササッと撫でるように読んでしまいましたが、ざっくり「安全にサーバのファイルをあれこれできるシステム」「FTPソフト使うよりちょっとレトロでめんどくさい」と認識しています(間違ってたらごめん)。各自で調べて下さい!!
FTPソフトがあるのにSSHを使うメリットとは
FFFTPとかWinSCPとかFTP RushとかFileZilaとか、FTPソフトがあればサーバにファイルをアップロードしたり消したりするのには特に問題ないわけです。最近はレンタルサーバもファイルマネージャー機能を用意してくれていたりしますし。そんな状況であえてSSHを使うメリットは、あくまで自分の認識ですが、「速さ」。
FTPソフトを使って中身が1000も2000もあるディレクトリを削除するとなると、それなりに時間がかかってしまいます(自分の使っているFTPソフトはそうです)。でもSSHだと即座に削除が完了するんですよ…。
あと、「Zipファイルをダウンロードしてきて展開してサーバにアップロード」という場合、内包ファイル数が多いとZipファイルの展開だけでも時間を喰うのに、更にアップロードでも時間がかかる。でもSSHだと、サーバにZipファイルをアップロードして、ちょちょっと何文字か入力したら、けっこう速いスピードでサーバ上で展開が完了してしまうんです。震えながら最初に試した時は感動した。更にZipファイルを直接サーバ上にダウンロードして、そのまま展開するという早業も使えるんですよ。すごい。
SSHを使う準備
SSHを使ってサーバとやり取りするには「ターミナルエミュレーター」「SSHクライアント」と呼ばれるジャンルのソフトが必要です。TeratermとかPoderosaとかPuTTYとか。自分はTeratermを使っていますので、その使い方を適当かつ無責任に紹介していこうと思います。ロクに知識もないくせに適当に使っているので、真似する場合は自己責任でお願いしますね! ※当記事は全体的にSEさんとかに読まれたらガチで「あさはか!」って怒られそうな記事です。ご注意を※
Teratermのダウンロードとインストール
Teratermのインストールに関してはこちらの記事を参考にさせて頂きました。
【ゼロからわかる】Teratermのインストールと使い方 – エンジニアの入り口
Teratermのインストールが終わったら早速サーバに接続してみます。
※今回はCoreserverで借りているスペースにログインしますが、CoreserverはSSHでログインする際に前もってコントロールパネルの「サーバ設定」>「ツール/セキュリティ」から「SSH接続IP許可」という操作をしておく必要があります。とは言ってもボタンをクリックするだけ。
いざSSH
元PGの友人から教えてもらったSSHの最初のステップをここでも書いておきます。
まずはTeratermでのログインから。
ホスト名(Coreserverなら○○○.coreserver.jp、さくらインターネットなら○○○.sakura.ne.jpなど)を入力
ちょっと怖い感じのメッセージが出てきますが、落ち着いて「このホストをknown hostsリストに追加する」にチェックが入っているのを確認し、「続行」をクリック。
ユーザ名とパスフレーズ(パスワード)を入力して「OK」。
ログインが完了すると多少の文章が表示されて、最後に「$」が表示されているのですが・・・
この「$」はカーソルみたいなもので、このあとに直接コマンドを打ち込んでいくといいらしい。
まず、「pwd」と入れてみる。
パスワード??とか一瞬思いましたが「print working directory」の略だそうで、これで現在自分がサーバの中のディレクトリのどこにいるかが表示されるとのこと。
「/virtual/●●●」
という一文が表示されたので、自分の現在地は「●●●」ディレクトリということですね。
次に「ls -al」と入力。
これは、現在いるディレクトリにあるファイル名・ディレクトリ名をリスト表示するコマンドらしい。
「ls」だけでもいいらしいですが、-alとつけると縦並びに表示がされて見やすいとのことで・・・
入力してみたら、確かにいつもFFFTP見てるのと同じようなリストが出てきました。これが現在地である「●●●」ディレクトリ内にあるファイルやフォルダの一覧ということか。
さらに、違うディレクトリに移動するには・・・
cd 【移動したいディレクトリ名】
と入力。
試しに、「cd public_html」と入れてみたものの、これを入力してEnterを押しただけだと表示が変わらないので、「ls -al」を再度入力してファイルを確認。
すると、public_htmlディレクトリ内にあるディレクトリやファイルが、こちらもFFFTPで見慣れてる感じで表示されました。
「サーバを直接操作する」なんて聞くと「誤操作してどえらいことになったらどうしよう・・・!」とビクビクしまくってましたが、とりあえずここまでは何事もなくテストできて一安心。
たったこれだけですが「こんな感じで操作する」という雰囲気が掴めました。
よく使う基本的なコマンド
・pwd:カレントディレクトリ(SSH上で自分が現在いるディレクトリ)の表示
・cd:ディレクトリを移動する
カレントディレクトリから、カレントディレクトリの直下にある●●●ディレクトリに移動する場合…「cd ●●●」
ひとつ上のディレクトリに移動したい場合…「cd ..」
・ls -al (半角スペースに注意):カレントディレクトリ内のファイル一覧を表示する
・rm:ファイルやディレクトリの削除
カレントディレクトリにある〇〇〇.phpというファイルを削除したい場合…「rm 〇〇〇.php」
カレントディレクトリにある●●●というディレクトリを削除したい場合…「rm -r ●●●」
カレントディレクトリにあるファイルを一括で削除したい場合(ディレクトリや.で始まるファイルは含まれない)…「rm *」
・wget:インターネット上にあるファイルをカレントディレクトリにダウンロードする
例)wget https://ja.wordpress.org/latest-ja.tar.gz
・tar -zxvf 〇〇〇.tar.gz(半角スペースに注意):tar.gzを展開する
・tar -zcvf ●●●.tar.gz 〇〇〇:〇〇〇というファイルまたはディレクトリを●●●.tar.gzに圧縮する
ピンバック: Backdrop CMSのインストール - Struggle