#author("2019-09-18T17:48:38+09:00;2019-09-18T17:47:22+09:00","default:inoue.ko","inoue.ko") #author("2022-06-04T17:52:35+09:00;2019-09-18T17:48:38+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 ~ // ホームディレクトリへ戻る $ df -h // ディスク容量を確認 $ 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 ~ ~ ~ ~