# Linux修改SSH端口号和登录方式

在Debian系统中，修改SSH端口号到2077的步骤如下：

### 一、备份配置文件

首先，备份`sshd_config`文件，以防止修改过程中出现错误导致无法通过SSH连接到服务器。

```bash
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
```

### 二、修改配置文件

使用文本编辑器（如`nano`或`vim`）打开`sshd_config`文件。


```bash
sudo nano /etc/ssh/sshd_config
```

或者

```bash
sudo vim /etc/ssh/sshd_config 
```

在文件中找到以`#Port 22`开头的行（这行表示SSH默认的端口号是22，并且前面的`#`表示注释）。将其修改为：


```bash
Port 2077
```

如果文件中没有`Port`配置项，直接在文件末尾添加`Port 2077`即可。

如果想开启root登录SSH的权限，需要找到`#PermitRootLogin prohibit-password`的位置，添加：
```
PermitRootLogin yes
```

### 三、重启SSH服务

保存并关闭配置文件后，重启SSH服务使配置生效。

```bash
sudo systemctl restart sshd
```

或者

```bash
sudo service ssh restart
```

### 四、检查防火墙设置

确保防火墙允许2077端口的流量。如果使用的是`iptables`，可以添加如下规则：

bash复制

```bash
sudo iptables -A INPUT -p tcp --dport 2077 -j ACCEPT
```

如果是`ufw`防火墙，可以使用：

bash复制

```bash
sudo ufw allow 2077/tcp
```

然后检查防火墙状态，确保规则已经生效：

bash复制

```bash
sudo ufw status
```

### 五、测试连接

在另一台计算机上或者使用SSH客户端，使用新的端口号尝试连接到Debian服务器。例如，如果你的服务器IP地址是`192.168.1.100`，可以使用以下命令：

bash复制

```bash
ssh -p 2077 username@192.168.1.100
```

其中`username`是你的Debian服务器上的用户名。如果能够成功连接，说明端口号修改成功。

### 六、root用户登录失败的处理

如果使用root用户连接，且连接失败，但是ping `192.168.1.100` 能通，有可能是SSH默认不允许root用户登录。

使用以下命令测试：
```bash
sshd -T | grep -i permitroot
```
输出结果只有两种：
- `permitrootlogin yes` → **允许** root 登录
- `permitrootlogin no`（或 `prohibit-password`/`without-password`） → **不允许**root登录

**步骤 1：改配置** 

```bash
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
```

说明：
- 自动去掉行首的 `#`（如果被注释）
- 把整行替换成 `PermitRootLogin yes`

**步骤 2：重启服务** 

```bash
sudo systemctl restart ssh
```
 验证
```bash
sudo sshd -T | grep permitroot
```
应输出：`permitrootlogin yes`

**一句话总结：**

执行完上面两条命令，root 就能用**密码**直接 SSH 登录了。如果宿主机仍连不上，再确认防火墙：`sudo ufw allow 22`。

