Login          

SSH でリモートアクセス

SSH でリモートアクセス

前回、centOS7 のインストールが完了しました
今後ソフトウェアのインストールやメンテナンスなどが必要になってきます。
サーバー機本体で行ってもいいですが、別のマシンからリモート操作できるたほうが便利です。
慣れているWindowsマシンから、操作できるようにしたいと思います。
後々は外部からでもアクセスできるようにしたいと思います。

OpenSSHサーバの導入

SSH(Secure Shell)を利用するには、openssh-serverパッケージのインストールが必要ですが、今回インスールした環境ではインストール済みでした。
インストール状態を調べるには、 「rpm -qa」か「yum list installed」 で調べられます。

 $ rpm -qa | grep ssh
     libssh2-1.4.3-12.el7_6.2.x86_64
     openssh-server-7.4p1-16.el7.x86_64
     openssh-clients-7.4p1-16.el7.x86_64
     openssh-7.4p1-16.el7.x86_64
 $ yum list installed | grep ssh
     libssh2.x86_64          1.4.3-12.el7_6.2  @updates
     openssh.x86_64          7.4p1-16.el7      @anaconda
     openssh-clients.x86_64  7.4p1-16.el7      @anaconda
     openssh-server.x86_64   7.4p1-16.el7      @anaconda

Tera TermでWindows からアクセス

Windowsマシンから、アクセスするには、Tera Term を導入します

ダウンロードのページへ移動すると、「exe版」と「zip版」がありました
「zip版」は、ダウンロード後適当な場所へ展開するだけで動作しました
インストール作業の必要がないので、試したい人などはこちらが便利です

Tera Term 起動

まずは、展開したフォルダ内の「ttermpro.exe」起動します。
Host: にアクセスしたいサーバのIPアドレス
Service: SSH
TCP port#: 22
「OK」で、ログイン画面へ変わります

「Connection refused」のエラーが出た場合は、sshdサービスが動作していない可能性があります。
サーバ機の画面から、「アプリケーション」⇒「システムツール」⇒「端末」で端末を起動して、「systemctl」コマンドを使用します。
「systemctl status sshd」で状況の確認ができます
緑色で、「 active ( running ) 」が表示されればsshdは動作しています
動作していない場合には、 「sudo systemctl start sshd」で動作させます
起動には、管理者権限の「sudo」が必要です。

$ systemctl status sshd
   ● sshd.service - OpenSSH server daemon
     Loaded: loaded(/usr/lib/systemd/system/sshd.service;enabled;vendor      preset:enabled)
    Active: active (running)
・
省略
・
$ sudo systemctl start sshd
 

sshdサーバが起動していれば、ログイン画面が表示されます

ここではとりあえず、Plain password でログインしますが、セキュリティ的に問題があるので、ログイン後公開鍵認証方式に設定し直すことにします。
「Use plain password to log in」を選択し、centOSインストール時に作成した管理者権限を持つ、ユーザ名とパスワードでログインします
ログインできると、「$ 」プロンプトでコマンド入力モードになります

公開鍵認証方法でセキュリティ向上

公開鍵認証は、公開鍵と秘密鍵のペアを作成し、秘密鍵をローカル(接続したい側)に保存しておき、公開鍵はサーバ(接続先)の決められたファイルに書き込んでおきます
この方式により、秘密鍵が保存されている端末で、鍵を作成する際に設定したパスフレーズを入力しないとログインできません。
秘密鍵ファイルを持っている事が必須なので、かなり安全度は向上できます

鍵ペアの作成

鍵ペアは「ssh-keygen」コマンドで作成します。
鍵の暗号方式には、DSAとRSAがあるようですが、RSAが主流なようです

$ ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/hogehoge/.ssh/id_rsa):
    このファイル名でよければ、「Enter」。
    次に接続でしようするパスフレーズを入力
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
    これで鍵ペアが生成されます
 Your identification has been saved in /home/hogehoge/.ssh/id_rsa.
 Your public key has been saved in /home/hogehoge/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:s6k671IoG2Z27A5BxFWsgAvhmwFTiRuhjLSArPgg5 hogehoge@server.hogehoge.com
 The key's randomart image is:
 +---[RSA 2048]----+
 | o…o +.=.  +. |
 | o. +o.+ .o= o |
 | .o.+.o .-. o.+o. |
 | o … = o.+-o  |
 | + o . S E+-+ .+-.|
 | * . o * .-+- -+ - |
 |. .  .= + + - . + |
 |o + … + - . + - * . |
 |. . o++.     |
 +----[SHA256]-----+

      これで、ホームディレクトリの「.ssh」ディレクトリの中に2個のファイルが
   出来上がってあがっています。

$ ls ./.ssh
id_rsa  id_rsa.pub

公開鍵はサーバ。秘密鍵は端末へ。

「id_rsa」が秘密鍵、「id_rsa.pub」が公開鍵
公開鍵はサーバーのホームディレクトリの「.ssh/authorized_keys」に追記します

$ cd ~/.ssh    <-----  ユーザーのホームディレクトリの .ssh に移動 
$ cat id_rsa.pub >> authorized_keys   <--- 公開鍵をauthorized_keysに追加

秘密鍵「id_rsa」はローカル(Windowsマシン)に保存します
USBなどのコピーして持って行ったほうが安全だと思いますが、 自宅内のローカルネット上であれば、上記でインストールした「Tera Term」で持っていく事もできます。
ログインしたら、「File」⇒「SSH SCP…」でダイアログが表示されます

Tera Term からサーバにログインしている状態で、「File」⇒「SSH SCP..」でダイアログが表示されます
上下に分かれていますが、上側がWindows側からサーバーへコピー
下側がサーバー側からWindowsへコピーになります
今回は下側を使用します。「From」に秘密鍵ファイル名「.ssh/id_rsa」
「To」に保存した適当なフォルダを指定し、「Receive」でコピーされます

RSA鍵で再ログイン

Tera Term でログインしている状態であれば、一旦終了し再起動します
今度は「Use RSA/…. key to log in」を選択し、「Private key file:」に保存した秘密鍵「id_rsa」を設定します
「passphrase」は、ぺア鍵を生成する時に入力した、パスフレーズです
これで、公開鍵認証方法でアクセスできるようになりました。

sshでの通信は暗号化されているため、インターネット内を通過しても比較的安全です。
さらに、公開鍵認証方式で鍵によるアクセスが可能になりましたが、今の状態では従来のパスワードによる認証もできてしまいます。
また、rootユーザーのログインも許可された状態になっています
次回は、もう少しセキュリティ向上のための設定を行いたいと思います