SSH
Secure Shell
SSHとは、暗号技術を用いて、リモートコンピュータに接続するための通信プロトコルのことです。コンピュータを遠隔操作する方法のひとつで、一般にその操作は Terminal から行います。SSHを利用するための代表的なソフトウェアに OpenSSHがあります。
基本操作
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ベースのテキストエディタです。
管理者権限で使えるコマンドの例
- ソフトウエアのインストール
# 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
- 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