SSH
|
Ubuntu server 18.04SSHubuntu server での SSH の設定方法について説明ます.インストールからクライアントソフトウェアーの接続まで,具体的な手順を述べます. 目次インストールと設定インストールubuntu server をインストールするときの「インストールするソフトウェアーの選択」の画面でOpenSSH server をチェックすれば,SSH のサーバーがインストールされます.後からインストールする場合は,以下のコマンドをつかいます. $ sudo apt install openssh-server インストールされている apache のバージョンの確認には,コマンド「ssh -V」を使います,以下に,コマンドとその結果を示します. $ ssh -V
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
起動と接続サーバー側のポートは空いているはずなので (参照),サーバー (デーモン: sshd) を起動すれば,外部との接続が可能になります.サーバーの起動コマンドは,「sudo systemctl start ssh」です. $ sudo systemctl start ssh
通常,クライアント側には ssh コマンドがインストールされています.クライアント側の以下のコマンドで,サーバーと接続ができます.Windows でも Linux でもコマンドは同一です. $ ssh uuuu@aaa.bbb.ccc.ddd
uuuu はサーバーのアカウント名で,aaa.bbb.ccc.ddd は サーバーの IP アドレスです.途中でパスワードの問い合わせがありますので,答えます.ログインできたら,インストールとポートは問題ないことが確認できたことになります.SSH で接続するだけならば,とても簡単です. SSH を制御するコマンド以下のコマンドで,SSH サーバー (sshd) をコントロールすることができます.これらのコマンドを実行する場合,ルートでの操作 (sudo) が必要です.
鍵の生成と設定sshを使ってリモートホストに接続する場合,パスワードを使うよりも鍵交換方式の認証の方が安全と言われています.鍵交換方式の認証では,秘密鍵と公開鍵が必要です.リモートホスト (WEB server 3)には公開鍵を,ローカルホストには秘密鍵を保管します(図1).これら秘密鍵と公開鍵は,server の ssh-keygen を使います.ここでは,この設定を示します.鍵交換方式の認証が不要の場合は,この節の設定は不要です. 鍵の生成鍵の生成は,Ubuntu server を使って生成します.秘密鍵と公開鍵の生成コマンドは「ssh-keygen -t rsa」です.オプション -t はタイプを表し,このコマンドで rsa の鍵の生成を行います.以下に具体的なコマンドとその実行結果を示します. $ ssh-keygen -t rsa yamamoto@www3:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/yamamoto/.ssh/id_rsa): [Enter]キーを押す Created directory '/home/yamamoto/.ssh'. パスワードを入れる Enter passphrase (empty for no passphrase): パスワードを入れる Enter same passphrase again: Your identification has been saved in /home/yamamoto/.ssh/id_rsa. Your public key has been saved in /home/yamamoto/.ssh/id_rsa.pub. The key fingerprint is: SHA256:IoPlGOVtjJeR+ijIMoS37dPEknam34bZdVsOlUWW228 yamamoto@www3 The key's randomart image is: +---[RSA 2048]----+ | o.. .B .. | | ..B .o | |o.+ = o o ..| |oo.B + o E| |++oo+o..S . ..| |*.o +oo.+ o . .| |o. + o = . = | | + =.. . . | | o... | +----[SHA256]-----+ このコマンドの結果,/home/yamamoto/.ssh に,秘密鍵「id_rsa」と公開鍵「id_rsa.pub」が生成されます.公開鍵はサーバーに,秘密鍵はローカルホストに保存します. 公開鍵の設定先ほど作成した公開鍵「id_rsa.pub」は,そのままでは使えません.ファイル「~/.ssh/authorized_keys」に,公開鍵を記述必要があります.このファイルには,ログインが許可されているの公開鍵の一覧が保存されています.ここでは,公開鍵「id_rsa.pub」をファイル「~/.ssh/authorized_keys」に記述する方法を示します.既にファイル「authorized_keys」が有る場合と,無い場合でコマンドが異なりますので分けて説明します. authorized_keys が無い場合ログインするアカウントのホームディレクトリにファイル「~/.ssh/authorized_keys」が無い場合です.この場合は簡単で,先ほど作成した公開鍵「id_rsa.pub」名称を「authorized_keys」に変更するだけです. $ cd ~/.ssh $ mv id_rsa.pub authorized_keys $ chmod 600 authorized_keys 最後にパーミッションを変更しておいたほうが良いです. authorized_keys が有る場合既にファイル「~/.ssh/authorized_keys」が有る場合です.そのファイルに,公開鍵を追記する必要があります.具体的には,以下のようにします. $ cd ~/.ssh $ cat id_rsa.pub >> authorized_keys ファイルに追記するだけなので,他の方法も可能です. ローカスホスト (Windows) の設定ローカルホストとして,Window を使うため設定を示します.クライアントとして PuTTY を使います. PuTTY のインストールWindows からリモートホスト (ubuntu server) に SSH で接続するためのクライアントソフトウェアーとして,私は「Puttyごった煮版」を使います.そのダウンロードとインストール方法は,以下のとおりです.
この Putty は解凍しただけで使用できますが,Windows のプログラムのようにスタートメニューに登録したほうが便利です.スタートメニューへの登録が面倒であれば,解凍されたそのままの状態で使って下さい. 秘密鍵の設定注意: 鍵交換方式の認証が不要の場合は,この節の設定は不要です.鍵交換方式では,サーバー側は公開鍵を,クライアント側 (Windows) は秘密鍵を持ちます(図2).この秘密鍵を持っているクライアントのみが,サーバーにログインできます.そのため,パスワード認証よりも,格段に安全性が高まります.ただし,この鍵認証を行うためには,クライアントとサーバーの両方で設定が必要です,ここでは,Windows をクライアントとして,Putty で接続する場合のクライアント側の設定を示します.サーバー側の設定は,「鍵交換方式でのログイン」に示します. Putty は OpenSSH が作成した秘密鍵が読めないので,PuTTYgen で ppk ファイルにします.手順は,以下のとおりです.
以上で,PuTTYで使う秘密鍵のファイルができました. ローカスホスト (Linux) の設定Linux からリモートホスト (web_server) に SSH で接続する場合でも,PuTTY を使っています.その設定を示します. putty のインストールWindows からリモートホスト (ubuntu server) に SSH で接続するためのクライアントソフトウェアーとして,私は「Putty」を使います.そのインストールコマンドは,以下のとおりです. $ sudo apt install putty 秘密鍵の設定注意: 鍵交換方式の認証が不要の場合は,この節の設定は不要です.Putty の秘密鍵の設定は,Windows と同じです.鍵交換方式では,サーバー側は公開鍵を,クライアント側 (Linux) は秘密鍵を持ちます(図5).この秘密鍵を持っているクライアントのみが,サーバーにログインできます.そのため,パスワード認証よりも,格段に安全性が高まります.ただし,この鍵認証を行うためには,クライアントとサーバーの両方で設定が必要です,ここでは,Linux をクライアントとして,Putty で接続する場合のクライアント側の設定を示します.サーバー側の設定は,「鍵交換方式でのログイン」に示します. Putty は OpenSSH が作成した秘密鍵が読めないので,puttygen で ppk ファイルにします.手順は,以下のとおりです.
以上で,PuTTYで使う秘密鍵のファイルができました.このファイルを使って実際の接続については,このページの「リモートホストへの接続 > PuTTYを使う方法→Linux」に記述しています.これを参考に設定を行い,SSH 接続してください. サーバー側の設定鍵交換方式でのログインsshを使ってリモートホストに接続する場合,パスワードを使うよりも鍵交換方式の認証の方が安全と言われています.このような理由から,ここのSSHサーバーではパスワード認証を禁止し,鍵交換方式を使うことにします.そのためには,設定ファイル「/etc/ssh/sshd_config」を以下のように変更します. PermitRootLogin no rootログインを禁止 PasswordAuthentication no パスワードログイン禁止、秘密鍵でログインさせる PermitEmptyPassword no パスワード無しのログインを禁止 設定が完了したら,コマンド「/etc/init.d/ssh restart」で再起動します. パスワードでのログイン鍵交換方式を使わないでパスワードでログインする場合は,設定ファイル「/etc/ssh/sshd_config」を以下のように変更します. PermitRootLogin no rootログインを禁止 PermitEmptyPassword no パスワード無しのログインを禁止 もちろん,これらの設定は変更可能です.設定が完了したら,コマンド「/etc/init.d/ssh restart」で再起動します. PuTTY での接続設定クライアントに PuTTY を使うかぎり,設定は Linux も Windows と同じです.最初の起動で,接続のための設定を行います.重要なところの設定を以下に示します.
外部から接続する場合は,「Host Name (or IP address)」はホスト名にします.「Private key file for authentication」の設定では,秘密鍵ファイル (WEB_server.ppk) を絶対パスで直接指定します.ボタン[Browse…]をクリックしても,このファイルを見ることができません.なぜならば,このファイルは「.ssh」という隠しディレクトリーに格納したからです. これらの設定に加え,Window > Color/Fonts で色とフォントの設定が可能です.これらについては,お好みで設定して下さい.私は Default Foregrand を黄色 (255, 255, 0),Default Background を黒色 (0, 0, 0) としました.Fonts は,「Takaoゴシック12」です. 設定後にカテゴリの「Session」に移動して,「Saved Sessions」下に適当なセッション名を入れて,ボタン [Save] をクリックします (図6).すると,一覧の中にそのセッション名が現れます (図7).以上で設定は,完了です. 起動日々の通常起動方法を示します.セッションを選択し,ボタン [Load] をクリックすることにより,設定が反映されます (図8).そして,ボタン [Open] をクリックします (図9).すると,ターミナルが開き「Passphrase for key…」とパスワードの入力を求められます.鍵を生成したときのパスワードを入れます.するとターミナルが立ち上がります. その他の接続コマンド「ssh」コマンド「ssh」を使うと,ターミナルから直接接続できます.Windows と Linux の使い方は,同じです.コマンドは,「ssh アカウント名@IPアドレス or ホスト名」です.具体例を以下に示します. $ ssh アカウント名@192.168.1.82
Enter passphrase for key '/home/ユーザー名/.ssh/id_rsa':
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-58-generic x86_64)
ファイル転送「scp」「scp」(Secure Copy)を用いると,ローカルとリモートホスト間でファイルやディレクトリーのコピーができます. コマンドライン使い方は,コマンド「cp」とほとんど同じです.リモートホストのファイルやディレクトリーの指定方法は,次のようにします.
GUIwindowsであれば「WinSCP」,Linuxであれば「gFTP」や「konqueror」が便利です. ページ作成情報参考資料
更新履歴
|