サーバー:CentOS7
クライアント:Windows10
接続アプリ:Tera Tarm 4.9
https://osdn.jp/projects/ttssh2/

WindowsからCentOS7にTera Tarmを使って接続
この時、鍵のファイルを使い他の場所からの侵入を防ぐ。



1)サーバー側で鍵を生成

Tera Tarmでユーザーとパスワードを使ってログイン

/home/ユーザーで鍵を生成
ssh-keygen -t rsa
適当にエンターだけで進めても良いし、パスコードを設定しても良い。
下記のフォルダとファイルが生成される
/home/ユーザー/.ssh
/home/ユーザー/.ssh/id_rsa
/home/ユーザー/.ssh/id_rsa.pub

authorized_keysという名前でコピーする
cd /home/ユーザー/.ssh/
cat id_rsa.pub >> authorized_keys

パーミッション変更
chmod -R 700 /home/ユーザー/.ssh/



2)鍵をクライアント側に転送

方法は問わない。
ftpなどで転送する。
転送するファイルは
/home/ユーザー/.ssh/id_rsa
中身はテキストなので、コピペでもOKらしい。
ftpが面倒なら、Tera Tarm上でcatして表示し、メモ帳に貼ってid_rsaとかの名前でデスクトップやマイドキュメントに保存する。
テキストの内容は1行目は「-----BEGIN RSA PRIVATE KEY-----」で始まり、
最終行は「-----END RSA PRIVATE KEY-----」
最終行は改行で終わっている。



3)Tera Tarmでログイン
ユーザーにはユーザーを入れ、パスワードは空欄にする。

『RSA/DSA/ECDSA/ED25519鍵を使う』にチェックを付け、『秘密鍵』ボタンを押す。
保存したid_rsaを指定して『OK』を押す。

失敗していなければログインできる。



4)確認
一旦、切断する。

ユーザーとパスワードでログインする。
一旦、切断する。

ユーザーと秘密鍵でログインする。
一旦、切断する。

ユーザーとパスワードでログインする。
一旦、切断する。

ユーザーと秘密鍵でログインする。

両方でログイン可能。



5)秘密鍵をバックアップ
秘密鍵をバックアップのためにコピーする。
PC以外の場所が良い。



6)パスワード認証を禁止する
ユーザーと秘密鍵でログインする。

設定ファイルを書き換える
sudo vi /etc/ssh/sshd_config
/PasswordAuthenticationでviの検索
PasswordAuthentication yesをnoに書き換える

sshを再起動する。
sudo systemctl restart sshd



7)確認
一旦、切断する。
ユーザーとパスワードでログインしようとして認証に失敗する。

ユーザーと秘密鍵でログインする。
一旦、切断する。

ユーザーとパスワードでログインしようとして認証に失敗する。

ユーザーと秘密鍵でログインする。
一旦、切断する。



8)ログイン不要なユーザーをログイン不能にする

完全に不要なユーザーは削除。
SSHでログインする予定が無いユーザーはログインを禁止しておく。

cat /etc/passwdでユーザーファイルを参照する

/bin/bashのユーザーはログイン可能なので、SSHログインするユーザー以外は/sbin/nologinにするなどしてログイン自体を不可能にしておく。
sudo usermod -s /sbin/nologin postgres

/sbin/nologinにしていてもスイッチする時にshellを/bin/bashに指定すればログイン可能
su - postgres --shell=/bin/bash

■ postgresqlインストール
sudo yum install postgresql postgresql-server postgresql-devel postgresql-contrib


■ postgresユーザーのパスワード設定
sudo passwd postgres

※インストールすると、postgresというログイン可能なユーザーが勝手に生成される。
ここのパスワードがいい加減だと、SSHからこのユーザーに侵入されてしまう。


■ postgresユーザーに蓋をしておく
sudo usermod -s /sbin/nologin postgres

※外からここに直接ログインしても仕方がないのでnologinにしておく。


■ 蓋をしたpostgresユーザーにスイッチする
su - postgres --shell=/bin/bash


■ postgresの初期化
su - postgres --shell=/bin/bash
postgresql-setup initdb


■ postgresの開始
sudo systemctl start postgresql
sudo systemctl enable postgresql


■ 他からdumpで抜いたヤツがあるならそれでセットアップ
su - postgres --shell=/bin/bash
psql postgres -U postgres -w -f 'dumpファイル' -E UTF8


■ 設定ファイルのバックアップ
sudo cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.org
sudo cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.org


■ 設定ファイルの書換
sudo vi /var/lib/pgsql/data/pg_hba.conf

local all all trust
host all all 0.0.0.0/0 md5


sudo vi /var/lib/pgsql/data/postgresql.conf

listen_addresses = '*'
port = 5432


■ ロールのパスワード変更
su - postgres --shell=/bin/bash
psql
alter role postgres with password 'ロールのパスワード';


■ ファイヤーウォールのサービスの一覧を表示する
sudo firewall-cmd --get-services


■ ファイヤーウォールに通り道を作る
sudo firewall-cmd --permanent --add-service=postgresql
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

sudo systemctl restart firewalld


■ ファイヤーウォールの通り道を元に戻す場合
sudo firewall-cmd --permanent --remove-service=postgresql
sudo firewall-cmd --permanent --remove-port=5432/tcp


■ pgadminIII設定
%userprofile%\AppData\Roaming\postgresql
pgpass.conf

ドメイン:5432:*:postgres:ロールのパスワード


■ psqlのコマンド
ロール一覧
\du

DB一覧
\l

コネクト
\c DB名

テーブル一覧
\dt

テーブルの情報
\d テーブル名

─────────────────────────
wgetとftpを使って、サーバの中身をそのまま取り込む
─────────────────────────
■コマンド例
# wget -P /home/bkup -r -x -l 0 ftp://user1:passwd@example.com/www/

■コマンド例解説
wget -P 【受取ディレクトリ】 -r -x -l 0 ftp://【ftpユーザー】:【ftpパスワード】@【ドメイン名】/【ftpルートからのpath】



─────────────────────────
wgetとhttpを使って、WEBサーバーのhtmlを静的に取り込む
─────────────────────────
■コマンド例
# wget -P /home/bkup -r -x -l 99 http://example.com

■コマンド例解説
wget -P 【受取ディレクトリ】 -r -x -l 99 【URL】



─────────────────────────
rsyncとsshを使って、サーバーにフォルダの中身を送る。
─────────────────────────
■コマンド例
# rsync -auvz --delete -e ssh /home/samba root@192.168.10.11:/home/backup

■コマンド例解説
rsync -auvz --delete -e ssh 【ソース】 root@192.168.10.11:【送先ディレクトリ】