- 追加された行はこの色です。
- 削除された行はこの色です。
- SSH へ行く。
#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
~
~
~
~