Tonysan’s blog

ほぼ自分のための Tips 集


刺され!

リモート接続の設定

リモート接続の設定

具体的にはメイン機というか、Windows11 のパソコンのターミナルから Ubuntu機を操作したいので、基本の SSH と Cockpit を入れます。Webmin ? そこまでいらんかな。

SSHでログインする

まずは SSH のインストール。これは Ubuntu機 のターミナルで行う。

sudo apt install openssh-server

SSH port 22 を変更

/etc/ssh/sshd_config に記述。
このやり方でできるのは 22.04 までらしい。
まず設定ファイルをバックアップ。.org 付けてコピー。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org

設定ファイルを開き、#port 22 の下あたりに port 2549 とか任意のポート番号を追加して、サービスを再起動。

sudo nano /etc/ssh/sshd_config
    :
    #port 22
    port 2549
    :
systemctl restart ssh

22.10 以降では別の設定ファイル /lib/systemd/system/ssh.socket を開いて、ListenStream=22 の値を任意のポート番号に書き換えて、
設定変更を反映。
Unit ファイル群の変更を Systemd に反映。

sudo cp /lib/systemd/system/ssh.socket /lib/systemd/system/ssh.socket.org
sudo nano /lib/systemd/system/ssh.socket
    :
    ListenStream=2549
    :
sudo systemctl restart ssh.socket
sudo systemctl daemon-reload

IPアドレス

Ubuntu機 のIPアドレスMACアドレスを確認して、

ip a

静的アドレスを設定するかルーターの固定アドレスに登録。(うちはルーターで一元管理)

ufw (ファイアウォール)の設定

Ubuntuufw 自体初めから入っていてインストールする必要はない。
初期状態はファイアウォール無効になっているので、すべての通信が許可されている。
有効化するとデフォルトはALL incoming 廃棄、outgoing 許可になる。
つまり、外への通信はすべて許可、外からアクセスされるものはすべて廃棄されて中に入れない。

ここでは port 2549 へ 192.168.1.*** からのアクセスのみ、かつ「30秒間の間に6回以上接続を試みた IP アドレスを許可しない」を設定。有効化して、設定内容を確認しておく。

sudo ufw limit from 192.168.1.0/24 to any port 2549
sudo ufw enable
sudo ufw status
To                         Action      From
--                         ------      ----
2549                       LIMIT IN    192.168.1.0/24

ここから Windows機 で。
ターミナル(PowerShell)を起動して、

ssh jiji@192.168.1.22 -p 2549

で、パスワードを入れて Ubuntu機 にログイン。
(ユーザー名とかIPアドレス、それから先程設定したポート番号も、ここでは架空のものに置き換えています)

公開鍵認証

そのまま SSH で接続したままの作業。
Ubuntu機 のホームディレクトリ直下に .ssh フォルダ作成して、パーミッション設定。

mkdir ~/.ssh
chmod 700 ~/.ssh

ここで一旦 SSH からログアウトして、

exit

プロンプトが PS C:\Users\jeff> になったら、SSH キーペア(公開鍵と秘密鍵)を生成する。

mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t ed25519 -f nekosu_key

暗号形式を ed25519 に、ファイル名を nekosu_key に指定。
生成すると、.ssh フォルダ内に、秘密鍵 nekosu_key と、公開鍵 nekosu_key.pub が生成される。

作った公開鍵を、Ubuntu 機の .ssh フォルダ内に転送。
ポート指定は -P。こちらは大文字なので注意。

cd ~/.ssh
scp -P 2549 nekosu_key.pub jiji@192.168.1.22:~/.ssh/

ssh-copy-idPowerShell で使えなかったから手動で登録する。

ssh jiji@192.168.1.22 -p 2549
cd ~/.ssh
cat nekosu_key.pub >> authorized_keys
chmod 600 authorized_keys
rm -f nekosu_key.pub

ssh コマンドで Ubuntu機 にログインし、.ssh ディレクトリに移動。
cat コマンドで nekosu_key.pub の中身を authorized_keys というファイルに、追記。(ファイルがなかったら勝手に作られる)
chmod コマンドでファイルの権限を 600 に変更。
送信した公開鍵はもう不要なので rm コマンドで削除。

/etc/ssh/sshd_config を開いて #PubkeyAuthentication yesPubkeyAuthentication yes に変更してサービスを再起動する。

sudo nano /etc/ssh/sshd_config
    :
PubkeyAuthentication yes
    :
sudo systemctl restart ssh

一旦、ログアウトして、

jiji@KiKis-delivery-service:~$ exit
ログアウト
Connection to 192.168.1.22 closed.
PS C:\Users\jeff> ssh -i ~/.ssh/nekosu_key jiji@192.168.1.22 -p 2549

で、ログインできたら公開鍵認証はOK。
これでジジが、キキの Ubuntu機 にジェフの Windows機 から鍵認証でSSH接続できるようになりました。

ちなみに SCP するときは、

scp -P 2549 -i ~/.ssh/nekosu_key [送信ファイル] jiji@192.168.1.22:[送る場所]

オプションの順番が違うとエラーになる。

よりセキュアにしたいなら、先程の /etc/ssh/sshd_config の何行目かにある #PasswordAuthentication yesPasswordAuthenticaiton no に書き換えて保存、サービス再起動で、パスワード認証では入れなくなる。

Cockpit の導入

パッケージのインストール。

sudo apt install cockpit
systemctl enable cockpit.socket
sudo ufw allow 9090
sudo ufw reload

ファイアウォールでポート 9090 を開けておく。

Windows の Web ブラウザで、[Ubuntu機 の IPアドレス]:9090/ へアクセス。


SSHポート番号、キーペアの名称などはフィクションです。自分の設定に置き換えてください。