「設定 - SSH」の版間の差分
細 (Wiki がページ「SSHを有効にする方法(SUSE)」を「設定 - SSH」に、リダイレクトを残さずに移動しました) |
|||
31行目: | 31行目: | ||
次に、上記で行ったSSHの設定を反映させるため、sshdを再起動する。<br> | 次に、上記で行ったSSHの設定を反映させるため、sshdを再起動する。<br> | ||
sudo systemctl restart sshd | sudo systemctl restart sshd | ||
<br> | |||
Firewalldを有効にしている場合は、SSHサービスのポート番号を開放する。<br> | |||
sudo firewall-cmd --permanent --add-port=<変更したSSHのポート番号>/tcp | |||
<br> | |||
Firewalldの設定を反映させるため、Firewalldを再起動する。<br> | |||
sudo firewall-cmd --reload | |||
<br><br> | |||
== SSH接続中のサスペンドの無効化 == | |||
SSH接続されているPCは無操作状態とみなされて、サスペンドの設定をしている場合、所定の時間が経過するとサスペンドされる。<br> | |||
そのため、SSH接続中のユーザが存在する時はサスペンドしないように設定する必要がある。<br> | |||
<br> | |||
まず、/usr/lib/systemd/systemディレクトリにsystemdユニットファイルを作成する。<br> | |||
<br> | |||
これは、スリープフックと呼ばれるものであり、スリープまたはハイバネートする前に<code>ExecStart</code>で指定したコマンドが実行される。<br> | |||
まず、<code>who</code>コマンドを実行することにより、SSH接続中のユーザが存在するかどうか確認する。<br> | |||
もし、SSH接続中のユーザが存在する場合は、終了コードを0以外にして後続処理を動作させないようにする。<br> | |||
sudo vi /usr/lib/systemd/system/inhibit-sleep.service | |||
<br> | |||
# /usr/lib/systemd/system/inhibit-sleep.serviceファイル | |||
[Unit] | |||
Description=Inhibit sleep when ssh logged | |||
Before=sleep.target | |||
[Service] | |||
Type=oneshot | |||
ExecStart=/usr/bin/sh -c '! who | grep -q "(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\})"' | |||
[Install] | |||
RequiredBy=sleep.target | |||
<br> | |||
以下のシンボリックリンクを作成する。<br> | |||
sudo ln -s /usr/lib/systemd/system/inhibit-sleep.service /etc/systemd/system/ | |||
<br> | |||
コマンドでsystemdユニットファイルを有効にするため、以下のコマンドを実行する。<br> | |||
sudo systemctl enable inhibit-sleep.service | |||
<br> | |||
動作確認するには、システムログを確認する。<br> | |||
サスペンドした場合は<code>Reached target Sleep.</code>、サスペンドから復帰した場合は<code>Stopped target Sleep.</code>と表示される。<br> | |||
sudo journalctl -f -usleep.target | |||
<br><br> | <br><br> | ||
2021年11月25日 (木) 21:38時点における版
概要
SSHサーバを構成し、リモート端末からサーバに接続して操作できるようにする。
SSHサーバは、CentOSをMinimal Installした場合やopenSUSEを最小インストールした場合でも、標準でOpenSSHがインストールされるため、追加インストールする必要はない。
OpenSSHのパスワード認証
CentOSおよびSUSEでは、SSHは標準で自動起動設定になっているため、パスワード認証方式でのログインが可能となっている。
したがって、最低限必要な設定として、セキュリティを考慮して以下に示すようにrootアカウントの直接ログインの禁止設定を実施しておけばよい。
まず、SSHの設定を行う。
sudo nano /etc/ssh/sshd_config PermitRootLogin no # コメントを解除(rootログイン禁止)
次に、上記で行ったSSHの設定を反映させるため、sshdを再起動する。
sudo systemctl restart sshd
もし、Firewalldを有効にしている場合は、SSHサービスの許可が必要である。
なお、ポート番号の変更をしていない場合、SSHのポートはTCP 22番である。
sudo firewall-cmd --permanent --add-service=ssh
Firewalldの設定を反映させるため、Firewalldを再起動する。
sudo firewall-cmd --reload
SSHのポート番号の変更
SSH接続ではデフォルトでポート番号22を使用している。
以下のコマンドを実行し、ポート番号の変更を行う。
Port 22と記載している箇所が存在するので、ポート番号49152 - 65535の間のポート番号に変更して保存する。
sudo nano /etc/ssh/sshd_config
次に、上記で行ったSSHの設定を反映させるため、sshdを再起動する。
sudo systemctl restart sshd
Firewalldを有効にしている場合は、SSHサービスのポート番号を開放する。
sudo firewall-cmd --permanent --add-port=<変更したSSHのポート番号>/tcp
Firewalldの設定を反映させるため、Firewalldを再起動する。
sudo firewall-cmd --reload
SSH接続中のサスペンドの無効化
SSH接続されているPCは無操作状態とみなされて、サスペンドの設定をしている場合、所定の時間が経過するとサスペンドされる。
そのため、SSH接続中のユーザが存在する時はサスペンドしないように設定する必要がある。
まず、/usr/lib/systemd/systemディレクトリにsystemdユニットファイルを作成する。
これは、スリープフックと呼ばれるものであり、スリープまたはハイバネートする前にExecStart
で指定したコマンドが実行される。
まず、who
コマンドを実行することにより、SSH接続中のユーザが存在するかどうか確認する。
もし、SSH接続中のユーザが存在する場合は、終了コードを0以外にして後続処理を動作させないようにする。
sudo vi /usr/lib/systemd/system/inhibit-sleep.service
# /usr/lib/systemd/system/inhibit-sleep.serviceファイル [Unit] Description=Inhibit sleep when ssh logged Before=sleep.target [Service] Type=oneshot ExecStart=/usr/bin/sh -c '! who | grep -q "(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\})"' [Install] RequiredBy=sleep.target
以下のシンボリックリンクを作成する。
sudo ln -s /usr/lib/systemd/system/inhibit-sleep.service /etc/systemd/system/
コマンドでsystemdユニットファイルを有効にするため、以下のコマンドを実行する。
sudo systemctl enable inhibit-sleep.service
動作確認するには、システムログを確認する。
サスペンドした場合はReached target Sleep.
、サスペンドから復帰した場合はStopped target Sleep.
と表示される。
sudo journalctl -f -usleep.target
SSHPassのインストール
SSHPass(Non-interactive SSH Password Authentication)を使用すると、コマンドにてssh接続のパスワードを指定することができるので、
sshコマンドと合わせて1行でSSH接続できるようになる。
パッケージ管理システムを使用してインストール
# CentOS sudo yum install epel-release sudo yum update sudo yum install sshpass # SUSE sudo zypper install sshpass
ソースコードからインストール
SourceForgeのWebサイトからSSHPassのソースコードをダウンロードする。
https://sourceforge.net/projects/sshpass/
ダウンロードしたファイルを解凍して、任意のディレクトリに移動する。(ここでは、sshpassというディレクトリとする)
tar xf sshpass-<バージョン> cd ~/sshpass-<バージョン>
ビルドディレクトリを作成する。
mkdir build && cd build
SSHPassをビルドおよびインストールする。
../configure --prefix=${HOME}/sshpass make -j $(nproc) make install
.profileファイル等に環境変数PATH
を追加する。
export PATH="$HOME/SSHPass/bin:$PATH"
確認
以下のコマンドを実行して、SSHPassが正常にインストールできたか確認する。
sshpass -V
使用方法
SSHPassを使用して、パスワードを指定する例を示す。
ただし、初回のログインにおいて、使用できない場合があるので注意すること。
sshpass -p <パスワード> ssh <ユーザ名>@<ホスト名またはIPアドレス>