文章851
标签121
分类10

SSH 服务器配置及客户端使用指南

SSH(Secure Shell)是一种安全的网络协议,用于通过不安全的网络安全地访问远程计算机。本文将介绍如何配置 SSH 服务器以及如何使用 SSH 客户端进行连接。

1. SSH 服务器配置

1.1 安装 SSH 服务器

在大多数 Linux 发行版中,可以通过包管理器安装 OpenSSH 服务器。

对于 Ubuntu/Debian 系列:

sudo apt update
sudo apt install openssh-server

对于 CentOS/RHEL 系列:

sudo yum install openssh-server

1.2 启动 SSH 服务

安装完成后,可以使用以下命令启动 SSH 服务:

sudo systemctl start ssh

要确保 SSH 服务在系统启动时自动运行,可以使用:

sudo systemctl enable ssh

1.3 配置 SSH 服务

SSH 配置文件通常位于 /etc/ssh/sshd_config。使用文本编辑器打开该文件:

sudo nano /etc/ssh/sshd_config

常用配置选项:

  • 端口:默认情况下,SSH 使用端口 22。可以更改为其他端口以提高安全性。

    Port 2222
  • 禁止 root 登录:出于安全考虑,建议禁止 root 用户直接登录。

    PermitRootLogin no
  • 允许/拒绝用户:可以指定允许或拒绝的用户。

    AllowUsers user1 user2

更改完配置后,保存并关闭文件。然后重启 SSH 服务以使更改生效:

sudo systemctl restart ssh

2. SSH 客户端使用

2.1 连接到 SSH 服务器

使用 SSH 客户端连接到 SSH 服务器的基本命令格式如下:

ssh username@hostname_or_ip

例如,连接到 IP 地址为 192.168.1.100 的服务器,用户名为 user

ssh user@192.168.1.100

2.2 使用自定义端口

如果 SSH 服务器使用了非默认端口,可以使用 -p 选项指定端口:

ssh -p 2222 user@192.168.1.100

2.3 密钥认证

为了提高安全性,可以使用 SSH 密钥对进行认证。

生成密钥对

使用以下命令生成 SSH 密钥对:

ssh-keygen -t rsa -b 4096

按照提示操作,密钥将保存在 ~/.ssh/ 目录下。

将公钥复制到服务器

使用 ssh-copy-id 将公钥复制到服务器:

ssh-copy-id user@192.168.1.100

输入密码后,公钥将被添加到服务器的 ~/.ssh/authorized_keys 文件中。

2.4 使用密钥连接

完成上述步骤后,您可以使用密钥连接到服务器,而无需输入密码:

ssh user@192.168.1.100

3. 安全性考虑

  • 更改默认端口:如前所述,更改 SSH 默认端口可减少被扫描的风险。
  • 使用强密码:确保使用强密码或密钥认证。
  • 限制登录用户:配置 sshd_config 文件以限制可登录的用户。
  • 防火墙设置:确保防火墙允许 SSH 端口的访问。

Linux shell循环示例

在 Linux Shell 编程中,循环是控制程序执行流程的重要结构。本文将介绍常用的几种循环结构,并提供示例代码。

1. for 循环

for 循环用于遍历列表或范围内的元素。

示例

#!/bin/bash

# 遍历数组
fruits=("苹果" "香蕉" "橙子")

for fruit in "${fruits[@]}"; do
    echo "我喜欢 $fruit"
done

输出

我喜欢 苹果
我喜欢 香蕉
我喜欢 橙子

2. while 循环

while 循环在条件为真时重复执行。

示例

#!/bin/bash

count=1

while [ $count -le 5 ]; do
    echo "计数:$count"
    ((count++))
done

输出

计数:1
计数:2
计数:3
计数:4
计数:5

3. until 循环

until 循环与 while 循环相反,直到条件为真时才停止。

示例

#!/bin/bash

count=1

until [ $count -gt 5 ]; do
    echo "计数:$count"
    ((count++))
done

输出

计数:1
计数:2
计数:3
计数:4
计数:5

4. 嵌套循环

可以在一个循环内部使用另一个循环。

示例

#!/bin/bash

for i in {1..3}; do
    for j in {1..2}; do
        echo "外循环:$i, 内循环:$j"
    done
done

输出

外循环:1, 内循环:1
外循环:1, 内循环:2
外循环:2, 内循环:1
外循环:2, 内循环:2
外循环:3, 内循环:1
外循环:3, 内循环:2

结论

通过使用 forwhileuntil 和嵌套循环,您可以在 Linux Shell 脚本中实现各种复杂的控制逻辑。这些循环结构是编写高效脚本的重要工具。希望本文的示例能帮助您更好地理解和使用 Linux Shell 循环。

PHP 中时区设置的三种方法

在 PHP 开发中,正确设置时区是确保时间处理准确性的重要步骤。本文将介绍 PHP 中设置时区的三种方法,并提供相应的示例代码。

方法一:使用 date_default_timezone_set()

date_default_timezone_set() 函数是 PHP 中最常用的方法,可以在脚本中直接设置时区。

示例代码

<?php
// 设置时区为 Asia/Shanghai
date_default_timezone_set('Asia/Shanghai');

// 获取当前时间
echo "当前时间:" . date('Y-m-d H:i:s') . "\n";

输出示例

当前时间:2024-10-18 15:30:00

方法二:在 php.ini 文件中设置

您也可以在 PHP 的配置文件 php.ini 中设置默认时区。这种方法适合全局应用,所有脚本都会使用该设置。

设置步骤

  1. 找到 php.ini 文件,通常位于 PHP 安装目录下。
  2. 找到 date.timezone 设置项。
  3. 修改为您需要的时区,例如:
date.timezone = "Asia/Shanghai"
  1. 保存文件并重启服务器使设置生效。

测试代码

<?php
// 获取当前时间
echo "当前时间:" . date('Y-m-d H:i:s') . "\n";

方法三:在数据库连接中设置(以 MySQL 为例)

如果您使用数据库(如 MySQL),可以在连接时设置时区。这对于确保数据库中的时间格式一致性非常重要。

示例代码

<?php
// 连接到 MySQL 数据库
$mysqli = new mysqli("localhost", "username", "password", "database");

// 设置数据库时区
$mysqli->query("SET time_zone = 'Asia/Shanghai'");

// 获取当前时间
$result = $mysqli->query("SELECT NOW() AS current_time");
$row = $result->fetch_assoc();
echo "当前时间:" . $row['current_time'] . "\n";

// 关闭连接
$mysqli->close();

输出示例

当前时间:2024-10-18 15:30:00
">