# SSH
linux の使用目的の大半は ssh
。
母艦から操作できるようにしたほうが楽なので使えるようにする。
# SSH 接続の設定
# インスコ
$ sudo apt install openssh-server
# (一応)設定のコピー
$ cd /etc/ssh
$ sudo cp sshd_config sshd_config.copy
# 編集
$ sudo vim sshd_config
# 設定を適用するための再起動
$ sudo systemctl restart sshd
sshd_config
の編集箇所は下の通り。
設定はお好みで。
- Port をデフォルトのものから移動 (Port)
- 特定のユーザーのみログインOKに (AllowUsers)
- root でのログインを禁止に (PermitRootLogin)
- 鍵認証を明示的に許可 (PubkeyAuthentication)
- パスワード認証を禁止に (PasswordAuthentication)
- 192.168.1.* からのアクセス時だけパスワード認証OK
$ diff -U 0 sshd_config.copy sshd_config
--- sshd_config.copy 2021-10-20 18:14:48.462826795 +0900
+++ sshd_config 2021-10-20 18:49:11.533569734 +0900
@@ -15 +15 @@
-#Port 22
+Port <ポート番号>
@@ -18,0 +19 @@
+AllowUsers <ユーザー名>
@@ -34 +35 @@
-#PermitRootLogin prohibit-password
+PermitRootLogin no
@@ -39 +40 @@
-#PubkeyAuthentication yes
+PubkeyAuthentication yes
@@ -58 +59 @@
-#PasswordAuthentication yes
+PasswordAuthentication no
@@ -123,0 +125,2 @@
+Match Address 192.168.1.*
+ PasswordAuthentication yes
参考: Ubuntu 20.04 : SSH サーバー インストールと設定 : Server World (opens new window)
参考: 外からは公開鍵、内側だけはパスワード許可 - sshd の ローカル側だけパスワードを使えるようにする。 - それマグで! (opens new window)
参考: CentOS7 SSH設定の記録 - Qiita (opens new window)
ローカルネットワークではパスワード認証、外部ネットワークでは鍵認証という形にした。
ローカルでは任意のPCからアクセスしたい可能性が想定されるので。
鍵設定はまた今度。(直近で使う予定がない)
てか Match
便利だねぇ... 複雑なこともなんでもできそう。
個人的には鍵なら全てのユーザーにログイン可能、ってことをやりたかったんだけど、Matchにその構文が無かった...。
TIP
/etc/ssh
に ssh_config
と sshd_config
という2つのファイルがあって、なにが違うのか気になったので調査した。
ssh_config
: ssh で接続するときの設定sshd_config
: ssh で接続されるときの設定
あーなるほど。
ssh コマンドもこのパッケージの一部なのね。
# SSH 接続を行う
母艦、別のPCから以下のコマンドで SSH 接続できる。
$ ssh <ユーザー名>@<アドレス> -p <ポート番号>
=> パスワード入力
これができたら後はリモートで作業しても良い。
PCはログアウトして放置しておこう。
WARNING
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
これは前回のアクセス時と環境が違うよ!という警告です。
ホストの公開鍵が違うので中間者攻撃されているかもよ、という親切心の塊です。
焦らず対象のホストの記録をローカルから消しましょう。
$ ssh-keygen -R <アドレス>
(はじめサーバー側のエラーかと思って、設定ファイルとにらめっこしていたのは内緒。)
(英語は Google 翻訳にかけてでも読もう。)