やりたいこと
ホスト側からサーバーにインターネット経由でsshを行えるようにする。
サーバー側ipは192.168.1.2とする。
ホスト名はpiとする。
$
から始まるのはコマンドです。
Linux
ユーザーの追加
サーバー側にuserを追加しておく。
$ sudo su -
$ useradd -m ユーザー名:pi
$ passwd ユーザー名:pi
or
$ adduser ユーザー名:pi
間違えたとき
$ userdel -r ユーザー名
参考にしたサイト
脳内サイト。
ネットワーク系
ipを固定する
追記:50-cloud-init.yamlを触るのは宜しくないらしい
https://qiita.com/yas-nyan/items/9033fb1d1037dcf9dba5
50-cloud-init.yamlを変更し、ネットワークを更新する。
$ sudo vi /etc/netplan/50-cloud-init.yaml
network:
ethernets:
eth0:
addresses:
- 192.168.1.2/24
gateway4: 192.168.1.1
dhcp4: false
dhcp6: false
accept-ra: false
nameservers:
addresses:
- 192.168.1.1
version: 2
$ sudo netplan apply
- 書き方
network:
ethernets:
<デバイス>:
addresses:
- <IPアドレス>
gateway4: <デフォルトゲートウェイ>
gateway6: <v6のデフォルトゲートウェイ>
dhcp4: false
dhcp6: false
accept-ra: false
nameservers:
addresses:
- <DNSネームサーバー>
version: 2
参考にしたサイト
ssh
sshインストールしておく。
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install ssh
鍵を用意する
ホスト側に鍵を生成する
$ ssh-keygen -t rsa
enter連打。(好ましくないので設定したい方は参考にしたサイトにて)
鍵をサーバー側に渡す
$ ssh-copy-id pi@192.168.1.2
接続してみる。
$ ssh pi@192.168.1.2
設定変更
パスワード認証でのSSH接続を無効化する。
$ sudo vi /etc/ssh/sshd_config
# Port 22
# Port 自由なポート番号
Port 2222
# PasswordAuthentication yes
PasswordAuthentication no
# PermitRootLogin yes
PermitRootLogin no
# MaxSessions 10
# 最大同時接続。なるべく少なく
MaxSessions 1
# 一番下に追記
AllowUsers pi
# これだけでも良いが pi@接続元IP の方が好ましい
$ sudo sshd -t
構文チェック
$ sudo systemctl restart sshd.service
または
$ sudo reboot
$ exit
$ ssh -p 2222 pi@192.168.1.2
参考にしたサイト
ポート開放
ファイアウォールをサーバー側にインストールしておく
$ sudo apt install ufw
一旦すべてのポートを拒否する
$ sudo su -
$ ufw default deny
sshのポートを開けて確認する
$ ufw enable
$ ufw allow 2222
$ ufw status
こっちのほうが好ましい
例:
ufw allow from 192.168.1.0/24 to any port 2222
192.168.1.0は接続先ip
ルーターによるポート開放。
ここが難点、だがルーターによって設定方法が違うので省きます。
参考にしたサイト
脳内サイト。
接続系
ログ監視
サーバー側で以下コマンドで確認できる。
$ sudo tail -f -n 3 /var/log/auth.log
不正アクセス対策
接続してみる
ip確認リンク
ip確認(コマンド)
$ curl ifconfig.io
ssh -p ルーターで設定したポート pi@確認したip
接続簡略化
毎回このコマンドを打つのは面倒なので以下ファイル作成
.ssh/config
# homeサーバー
Host pi
HostName 192.168.1.2
Port 2222
User pi
IdentityFile ~/.ssh/id_rsa
Host home
HostName 確認したip
Port ルーターで設定したポート
User pi
IdentityFile ~/.ssh/id_rsa
$ ssh home
参考にしたサイト
以上。
注意事項
- 内部LANのクライアントからはグローバルIPでSSH接続出来ないので注意してください。
- 自己責任でお願いします。
経緯
自宅サーバーを作ってみたかったから。
動作環境
raspi4b
ubuntu-21.04