by 資工三 111110517 范揚玄
安裝 ssh 伺服器
sudo apt install openssh-server
套件查詢
dpkg -l | grep ssh
ssh 伺服器狀態查詢/控制
systemctl status ssh
start
stop
restart
reload
enable
disable
上個指令是否成功
echo $?
生成 ssh 密鑰
ssh-keygen
ssh-copy-id wrr606@UB2
產生名為 file 檔案
touch file
touch a{00..99}.cpp
傳送 file 檔案 / 下載 file 檔案
scp file wrr606@UB2:
scp wrr606@UB2:file .
加上下行
vim /etc/hosts
192.168.242.131 R2
在伺服端/雲端表示 任意介面 (「監聽所有可用的介面」或「接受任意 IP 連接」)
在 PC 上表示 尚未取得 IP
UB1:Server
UB2:client
UB1:安裝 Server 端
apt install -y nfs-kernel-server
UB1:新增要共享的資料夾
mkdir /mynfs
UB1:調整資料夾權限
chown -R nobody:nogroup /mynfs
UB1:加入下行
vim /etc/exports
/mynfs *(rw,sync,no_subtree_check,all_squash)
UB1:重啟 nfs-kernel-server
systemctl restart nfs-kernel-server
UB2:安裝 client 端
apt install nfs-common -y
UB2:新增要共享的資料夾
mkdir /mydata
UB2:關聯到 UB1 的資料夾
mount -t nfs -o rw,resvport 192.168.242.130:/mynfs /mydata
若要取消關聯
umount /mydata
關機狀態下,調整成 USB 3.1 後再插入 USB
選擇 Add 新增硬體,並選擇 Hard Disk
查看掛載點
lsblk
查看磁碟使用情況
df -h
查看插入的所有硬碟
ls /dev/sd*
分割磁碟
fdisk /dev/sdb
輸入 n 按 Enter
輸入 p 按 Enter
輸入 1 按 Enter
按 Enter
輸入 w 再按 Enter
用 fdisk 確認分割區
fdisk -l /dev/sdb
格式化磁碟
mkfs -t ext4 /dev/sdb1
掛載硬碟
mount /dev/sdb1 /mydisk
查詢硬碟 UUID
blkid
將 UUID 複製貼上
vim /etc/fstab
UUID=fa7f7fe7-e7ac-4b16-8352-0713428eda08 /mydisk ext4 defaults 0 1
重開機後確認是否成功掛載
df -h
參考教學:https://blog.tarswork.com/post/mariadb-install-record
安裝金鑰
sudo apt-get install apt-transport-https curl
sudo mkdir -p /etc/apt/keyrings
sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
加入儲存庫
vim /etc/apt/sources.list.d/mariadb.sources
# MariaDB 11.1 repository list - created 2023-11-08 06:16 UTC
# https://mariadb.org/download/
X-Repolib-Name: MariaDB
Types: deb
# deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# URIs: https://deb.mariadb.org/11.1/ubuntu
URIs: https://ftp.ubuntu-tw.org/mirror/mariadb/repo/11.1/ubuntu
Suites: jammy
Components: main main/debug
Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp
安裝 MariaDB
apt-get update
apt install mariadb-server
systemctl status mariadb
mysql_secure_installation
編輯 MariaDB 設定檔
vim /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 0.0.0.0
新增資料庫權限
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'user' WITH GRANT OPTION;
FLUSH PRIVILEGES;
關閉防火牆並重開
systemctl stop ufw
systemctl disable ufw
service mysql restart
安裝客戶端
apt install mysql-client
遠端連入資料庫
mysql -h 192.168.242.130 -u root -p
查看資料庫
show databases;
創建資料庫
create database testdb;
使用資料庫
use testdb;
創建資料表
create table addrbook(name varchar(50) not null, phone char(10));
插入資料
INSERT INTO addrbook(name, phone) VALUES ("tom", "0912123456");
INSERT INTO addrbook(name, phone) VALUES ("mary", "0912123567");
使用 SQL 語法查詢資料
SELECT name,phone FROM addrbook;
查看 CPU 使用率
apt install dstat
dstat -c -n -d 10
監控系統
top
--------------------------
apt install iotop
iotop
參考教學:https://docs.ossii.com.tw/books/ubuntu-server-2004-apache-mariadb-php
安裝 apache
apt -y install apache2 apache2-utils
確認啟用情況
systemctl status apache2
安裝 PHP
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update -y
apt install php8.1 libapache2-mod-php8.1 php8.1-gd php8.1-mysql php8.1-curl php8.1-mbstring php8.1-intl -y
apt install php8.1-gmp php8.1-bcmath php8.1-imagick php8.1-xml php8.1-zip -y
a2enmod php8.1
systemctl restart apache2
測試 PHP 版本資訊
vim /var/www/html/info.php
<?php
phpinfo();
?>
連線去資料庫提取資料
vim /var/www/html/test.php
<?php
$servername="127.0.0.1";
$username="root";
$password="user";
$dbname="testdb";
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("connection failed: " . $conn->connect_error);
}
else{
echo "connect OK!" . "<br>";
}
$sql="select name,phone from addrbook";
$result=$conn->query($sql);
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
echo "name: " . $row["name"] . "\tphone: " . $row["phone"] . "<br>";
}
} else {
echo "0 record";
}
?>
參考教學:https://xenby.com/b/104-教學對網頁啟用密碼驗證-apache
安裝 apache2-utils
apt-get install apache2-utils
新增使用者
sudo htpasswd -c /etc/apache2/.htpasswd username001
使用 vim 修改設定檔
vim /etc/apache2/sites-enabled/000-default.conf
<Directory "/var/www/html">
AuthType Basic
AuthName "You need to login"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
重啟伺服器
systemctl restart apache2
安裝 python
apt install python3-pip -y
安裝 Flask
pip3 install flask
執行 run.py
# run.py
from flask import Flask
app = Flask("test")
@app.route('/')
def hello_world():
return '<h2>Hello, World!</h2>'
@app.route('/test')
def hello_world2():
return '<h2>Test</h2>'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=3000, debug=True)
python3 run.py
新增使用者
useradd -m Function -s /bin/bash
更改使用者密碼
passwd Function
刪除使用者及其目錄
userdel -r Function
新增部門
groupadd teacher
groupadd english
新增成員並加入部門(-g 主要部門 -G 次要部門)
useradd -g teacher -G english Sam
顯示使用者訊息
id Sam
新增成員並加入賦予 sudo 權限
useradd -G sudo Sam
切換使用者
su Sam
創建 Shell 腳本
vim test.sh
#!/user/bin/bash
touch {1..3}
使用 Bash 執行
bash a.sh
/home
和 掛載硬碟
之間創建硬連結)。ln test.txt test_hardlink.txt
ln -s test.txt test_symboliclink.txt
'
和 雙引號 "
'
"
查看使用者
w
pts: 使用 ssh 連線登入
tty: 使用虛擬終端登入
記憶體使用率
free -h
last
更改 host 為 UB1
hostnamectl set-hostname UB1
安裝 SAMBA 伺服器
apt install samba samba-common -y
新增資料夾
mkdir sharea shareb
調整權限為 777
chmod 777 a b
新增測試用的帳號
adduser Sam
adduser Tom
設定密碼
smbpasswd -a Sam
smbpasswd -a Tom
修改配置檔,新增下列文字(路徑是絕對位置,不是相對位置)
vim /etc/samba/smb.conf
[sharea]
path = /home/user/sharea
comment = guest access folder
writable = yes
browseable = yes
guest ok = yes
[shareb]
path = /home/user/shareb
comment = have auth can access
writable = yes
browseable = yes
valid users=Sam,Tom
write list=Sam,Tom
重啟 Samba 伺服器
systemctl restart smbd
Windows 檔案總管輸入 \\192.168.242.130
(R1 IP)
以 R1 當作路由
R1: NAT、LAN Segment(LAN10)、LAN Segment(LAN20)
H1: LAN Segment(LAN10)
H2: LAN Segment(LAN20)
H1: 192.168.10.1
ip addr add 192.168.10.1/24 dev ens33
ifconfig ens33 0
ip route add default via 192.168.10.254
H2: 192.168.20.1
ip addr add 192.168.20.1/24 dev ens33
ifconfig ens33 0
ip route add default via 192.168.20.254
R1: 192.168.10.254
192.168.20.254
ip addr add 192.168.10.254/24 dev ens37
ip addr add 192.168.20.254/24 dev ens38
ifconfig ens37 0
ifconfig ens38 0
echo 1 > /proc/sys/net/ipv4/ip_forward
相互 ping 的通就是成功了
以 R1 當作路由
以上文 「將虛擬機設定為路由」
接續
參考教學:https://www.kjnotes.com/linux/118
R1:
安裝 DHCP 套件
apt install isc-dhcp-server -y
在配置檔加入下列文字:
vim /etc/dhcp/dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.1 192.168.10.100;
option subnet-mask 255.255.255.0;
option routers 192.168.10.254;
option broadcast-address 192.168.10.255;
default-lease-time 600;
max-lease-time 7200;
}
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.1 192.168.20.100;
option subnet-mask 255.255.255.0;
option routers 192.168.20.254;
option broadcast-address 192.168.20.255;
default-lease-time 600;
max-lease-time 7200;
}
重啟套件
systemctl restart isc-dhcp-server
網路分布:
以上文 「DHCP Server」
接續
網卡:
R1: NAT、LAN Segment(LAN10)、LAN Segment(LANR1R2)
R2: NAT、LAN Segment(LAN20)、LAN Segment(LANR1R2)
H1: LAN Segment(LAN10)
H2: LAN Segment(LAN20)
在 Ubuntu 中設定每個節點的每個網卡 IP 至上圖位置
R1、R2 都需按照上文 「DHCP Server」
安裝 DHCP 套件並開啟路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward
在配置檔加入下列文字:
vim /etc/dhcp/dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.1 192.168.10.100;
option subnet-mask 255.255.255.0;
option routers 192.168.10.254;
option broadcast-address 192.168.10.255;
default-lease-time 600;
max-lease-time 7200;
}
重啟套件
systemctl restart isc-dhcp-server
配置 12.1.1.1
ip addr add 12.1.1.1/24 dev ens38
設定轉發
ip route add 192.168.20.0/24 via 12.1.1.2
在配置檔加入下列文字:
vim /etc/dhcp/dhcpd.conf
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.1 192.168.20.100;
option subnet-mask 255.255.255.0;
option routers 192.168.20.254;
option broadcast-address 192.168.20.255;
default-lease-time 600;
max-lease-time 7200;
}
重啟套件
systemctl restart isc-dhcp-server
配置 12.1.1.2
ip addr add 12.1.1.2/24 dev ens38
設定轉發
ip route add 192.168.10.0/24 via 12.1.1.1
使用 ping 測試 H1 是否可以 ping 到 H2