LogoMark.png

SSH の変更点


#author("2019-09-18T17:48:38+09:00;2019-09-18T17:47:22+09:00","default:inoue.ko","inoue.ko")
*SSH
Secure Shell
~

SSHとは、暗号技術を用いて、リモートコンピュータに接続するための通信プロトコルのことです。コンピュータを遠隔操作する方法のひとつで、一般にその操作は [[Terminal]] から行います。SSHを利用するための代表的なソフトウェアに [[OpenSSH>https://www.openssh.com/]]があります。

~

**基本操作
SSH接続可能なサーバーがあって、あなたがそのユーザとして登録済みである(つまりID,PWを持っている)・・というのが大前提です。
~

***接続
-[[Terminal]] を起動
-接続します
 $ ssh [ ユーザー名 ] @ [ 接続先IPアドレス]
 例)$ ssh hanako@133.17.XXX.XXX
 [ $ ] はプロンプト記号です。$ の後の文字列を打ち込んで下さい。 
-以下のように表示されるので、yes を入力
 The authenticity of host 'XXX.XXX.XXX.XXX' can't be established.
 RSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.
 Are you sure you want to continue connecting (yes/no)?
-以下のような警告がでて、パスワードが求められるので、入力します。
 Warning: Permanently added 'XXX.XXX.XXX.XXX' (RSA) to the list of known hosts.
 Password: 
-以下のようにプロンプトが表示されれば、ログイン成功です。
 Last login: Mon Apr  12 12:00:15 2016
 $ 
~

***接続時の権限の違い
一般ユーザと root ユーザ(管理者)とでは、プロンプトが異なります。
-一般ユーザの場合 ''$''
-root ユーザの場合 ''#'' 

root は「神」です。この状態だと何でもできてしまいます。システムを破壊する恐れもありますので注意して下さい。ふつうは一般ユーザのまま使用し、管理者権限が必要な場合にのみ sudo コマンドを使って操作します。
~

***よく使うコマンド
以下、ログイン後に使える基本的なターミナルコマンドの例です。
 $ exit または logout  // ログアウト(必須) 
 $ pwd     // カレントディレクトリを確認
 $ ls         // カレントディレクトリにあるファイルを確認
 $ cd [ フォルダ名 ]    // ディレクトリを移動
 $ cd ..    // 一つ上の階層へ移動
 $ cd ~    // ホームディレクトリへ戻る
 $ vi ファイル名     //Vimエディタを立ち上げファイルの中を確認
参考:vi, [[Vim]] はCUIベースの[[テキストエディタ>TextEditor]]です。
~

***管理者権限で使えるコマンドの例
-ソフトウエアのインストール
 # yum install [ ソフトウエア名 ]
-ソフトウエアのアンインストール
 # yum remove [ ソフトウエア名 ]
-デーモン(サービス)の起動等> systemctrl 
--サービス起動 systemctl start ${Unit}
--サービス停止 systemctl stop ${Unit}
--サービス再起動 systemctl restart ${Unit}
--サービスリロード systemctl reload ${Unit}
--サービスステータス表示 systemctl status ${Unit}
--サービス自動起動有効 systemctl enable ${Unit}
--サービス自動起動無効 systemctl disable ${Unit}
--サービス自動起動設定確認 systemctl is-enabled ${Unit}
--サービス一覧 systemctl list-unit-files --type=service
--設定ファイルの再読込 systemctl daemon-reload
--例)Apacheサーバーの起動/終了/再起動
 一般ユーザーとしてログインしている場合(root の PW が必要です)
 $ sudo systemctl start httpd 
 $ sudo systemctl stop httpd 
 $ sudo systemctl restart httpd 
 rootユーザーとしてログインしている場合
 # systemctl start httpd  // Webサーバー(Apache)の起動
 # systemctl stop httpd  // Webサーバーの停止
 # systemctl restart httpd  // Webサーバーの停止
~
~


**2台のMacで遠隔操作体験

***前提
-Macの場合、ソフトのインストールは不要
Mac OS には、デフォルトでSSHサーバー(sshd:SSHデーモン)がインストールされているので、システム環境設定でそれを有効にすれば、遠隔からの操作が可能になります。

-動作体験には Macが2台必要
Macが2台あれば、リモートログインの体験が可能です。遠隔地にあるリモートマシンを Mac A, 自分の手元にあるローカルマシンを Mac B として、以下に接続の手順を概説します。

-アカウント情報の確認が必要
遠隔操作が可能なのは、操作権限を与えられた人だけです。リモートマシンのオーナーユーザー、あるいはアカウントが設定されたユーザーで、ユーザー名とパスワードがあらかじめ設定されいることが必要です。

-IPアドレスの確認が必要
リモートマシン(接続される側)の IPアドレスがわかっていないと接続できません。Macの場合、Optionキーを押したまま、ファインダー右上のネットワークアイコン(無線アイコン)をクリックすると、IPアドレスがグレー表示されます。自宅LANの場合は、192.168. 10. 102 などの番号が設定されています。

~

***リモート Mac A における sshd の設定
はじめにリモート側(サーバー側)となるマシンを直接操作して、リモートログインを可能な状態にする必要があります。

-システム環境設定>共有
-''リモートログイン'' にチェックして、遠隔操作を許可
-以下のように表示されます。
 このコンピュータにリモートからログインするには、
 "ssh [ ユーザー名 ] @ [ IPアドレス ]"と入力してください。
このとき、ユーザー名の部分には、あなたのアカウント名、 IPアドレスの部分には、現在の当該Macに割り当てられたIPアドレスが表示されています。IPアドレスは、上記、前提のところで述べた「Option + ネットワークアイコンクリックで表示されるもの」と同じになっているはずです。

~

***ローカル Mac B からのログイン

-ローカル Mac B で [[Terminal]] を起動
-プロンプト [ $ ] が表示されたら、Mac A のメッセージ通りに入力
 $ ssh [ ユーザー名 ] @ [ IPアドレス]
 例)$ ssh hanako@192.168.10.05
 [ $ ] はプロンプト記号です。$ の後の文字列を打ち込んで下さい。 
-以下のように表示されるので、yes を入力
 The authenticity of host 'XXX.XXX.XXX.XXX' can't be established.
 RSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.
 Are you sure you want to continue connecting (yes/no)?
-以下のような警告がでて、パスワードが求められます。リモート側のMac Aにログインするときと同じパスワードを入力します。
 Warning: Permanently added 'XXX.XXX.XXX.XXX' (RSA) to the list of known hosts.
 Password: 
-以下のようにプロンプトが表示されれば、ログイン成功です。
 Last login: Mon Apr  12 12:00:15 2016
 $ 

以上で手元の Mac B から リモート Mac A を遠隔操作できる状態になっています。Terminal から与えるコマンドは、リモートMac A に対するコマンドになっています。

-例えば ls とタイプすると・・
 $ ls
>リモート Mac A のホームディレクトリの内容が表示されます。
~

***ログアウト
-接続を切断するには、プロンプトから exit とタイプします。
$ exit
-以下のように表示されて、ログアウトした状態になります。
 logout
 Connection to XXX.XXX.XXX.XXX closed
 $ 
~

***ファイルのアップロード
ファイルのアップロードには ''scpコマンド'' を使います。
ここでは、手元の Mac B からリモート Mac A へ転送する事例を紹介します。

-まず、リモート Mac A に ssh でログインして、リモート Mac A のディレクトリ構成を確認します。ここでは、以下のように、ユーザーホーム直下に test というディレクトリがある前提で話を進めます。
 $ ls
 Applications  Library  Desktop  Movies  Documents  Music
 Downloads  Pictures  Public  test

-確認できたら、リモート Mac A からログアウトします。
 $ exit

-ログアウト後のプロンプトは手元の Mac B です。Mac B のユーザーホーム直下には、以下のように sample.zip があるとします。
 $ ls
 Applications  Library  Desktop  Movies  Documents  Music
 Downloads  Pictures  Public  sample.zip

-Mac B の sample.zip をリモート Mac A の ユーザーホーム直下の test フォルダの中へアップロードします。以下のように ''scpコマンド'' を使います。
コマンドの仕様は、以下、
 $ scp [ ファイル ] [ ユーザー ] @ [ IP ] : [ 転送先ディレクトリ ]
具体的には、以下のように書きます。
 $ scp sample.zip hanako@192.168.10.05:~/test
ここで、 ~/ はユーザーホームを意味します。よって ~/test はユーザーホーム直下にある test ディレクトリを意味します。
-入力後パスワードを聞かれるので、ssh接続の際と同様に入力します。
-以下のように表示されて転送が終了します。
 sample.zip                                100%   48KB   3.2MB/s   00:00 
 $
-終了後は、念のため、リモートのMac に ssh ログインして、ファイルが転送できたか確認してください。

~
***ファイルのダウンロード
ファイルのダウンロードも同様に ''scpコマンド'' を使います。ここでは、リモートMac A の test ディレクトリに sample.zip というファイルがあって、手元の Mac B の /test にダウンロードする例を紹介します。書き方はアップロードの場合と逆になるだけです。
 $ scp [ ユーザー ] @ [ IP ] : [ ファイルのパス ]  [ ダウンロードする場所 ] 
具体的には、以下のように書きます。
 $ scp hanako@192.168.10.05:~/test/sample.zip  /test 

~
~

**MEMO

***ssh接続で、サーバーのPHPアップグレード
-[[SSH]]でサーバーに rootでログイン
-以下、参考サイト https://blog.s-giken.net/369.html
-アップデート後にサーバーをリスタート
 # systemctl restart httpd
// # service httpd restart
-PHP のバージョン確認
 # php -v

~
***ssh接続で、MySqlをインストール(環境は CentOS) 
-Change root user
 $ su
-Install MySQL YUM repository
 # yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
-Update or Install MySQL
 # yum install mysql-community-server
-Start MySQL server
 # service mysqld start
-Version Check
 # mysql --version
-Ser User Name
 # mysql -u root
--MySQLではユーザーをユーザー名+接続ホスト名で管理しています。
--インストール直後とに登録されているのはユーザー名が root でホスト名が localhost のユーザー
--ユーザー名には root@localhost と指定するのが原則だが、ホスト名 localhost の場合は省略可能。よって、ユーザー名には root を指定。 
-入ろうとして以下のエラーが出た場合は
 Access denied for user 'root'@'localhost' (using password: NO)
初期パスワードを以下で確認
 # cat /var/log/mysqld.log | grep 'password is generated'
-表示されたパスワードを使って、以下で入る
 # mysql -u root -p
 [Enter password:   ここでパスワードを入力
-以下のようになれば無事ログイン
 mysql>
-root のパスワードを設定
 mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'ここに新しいパスワード';
-一旦ログアウト
 mysql > quit
-設定したPW で入れるか確認
 # mysql -u root -p
 [Enter password:   ここでパスワードを入力

-参考:httpdのリブート
 # systemctl restart httpd
 または
 # service httpd restart
~
~
~
~