Debian11 服务器安装与SSH配置

Ubuntu 的读音就是优班图,乌班图、乌邦图。一个Linux的发行版本,由debian衍生而来。

Debian 是 Debian 的项目创始人 Ian Murdock 和他的妻子 Debra 的名字缩写。根据 debian 的官方网站建议,应该这样读:Deb’-ee-en ,“得比恩”,重音在第一音节。

使用 apt update 获取最新软件包:

$ apt update

10 packages can be upgraded.
Run ‘apt list --upgradable’ to see them.
N: Repository ‘http://mirrors.tencentyun.com/debian bullseye InRelease’
changed its ‘Version’ value from ‘11.2’ to ‘11.3’

升级系统:

$ apt upgrade

apt update 获取软件包,并没有更新软件。
apt upgrade 则是更据 update 命令获取的最新的软件包列表,去真正地更新软
apt dist-upgrade 则是更据 update 命令获取的最新的软件包列表,去真正地更新软件。

使用 SSH 登录服务器

重装系统:腾讯云后台

重置密码:腾讯云后台

$ ssh -p 22 root@124.223.106.211

配置vim

$ vi ~/.vimrc

"====== my vimrc config ======"
set number     " 显示行号
set cursorline " 突出显示当前行
set tabstop=4  " 设置Tab键宽度为4个空格
set encoding=utf-8  " 设置编码格式
set ruler           " 显示标尺  
syntax on           " 自动语法高亮
set nocompatible "
set showmode
set showcmd      " 输入的命令显示出来,看的清楚些
set autoindent   " 设置自动缩进,即每行的缩进同上一节相同
set expandtab    " tab
set laststatus=2 " 总是显示状态行
set wildmenu
set mouse=  " 禁用鼠标

修改 SSH 的默认端口

(1) 修改 sshd_config 文件

SSH 的默认端口为 22

修改 sshd_config 文件:

$ vi /etc/ssh/sshd_config

在文件里找到“#Port 22”内容, 在下边新增一行或直接将该行的默认端口号修改为【22021】(随便其他的未占用的端口号)。

确认 sshd_config 里的这几个字段,应配置如下:

# 端口号
#Port 22
Port 22021

#允许管理员登录(默认禁止,腾讯云默认已改为yes)
#PermitRootLogin prohibit-password
PermitRootLogin yes

#登录需要使用密码(默认没有该配置,腾讯云镜像已加上)
PasswordAuthentication yes

systemctl status ssh
systemctl restart ssh

(2)修改应用服务器的防火墙

点击【服务器】找到实例,点进详情找到【防火墙】,点击【添加规则】,新增一条自定义的 TCP 规则,端口改成新改的那个端口,比如【2201】。

(3)使用新配置的端口,登录操作成功:

$ ssh -p 22035 root@120.27.63.109
root@120.27.63.109's password: 
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-31-generic x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Welcome to Alibaba Cloud Elastic Compute Service !
Last login: Tue Jun 22 17:11:59 2021 from 58.33.173.42

修改SSH端口号成功。

将之前的通过22端口登录的终端退出,就无法再通过 22端口登录。

# 服务器里
root@VM-4-14-debian:~# exit
logout
Connection to 124.223.106.211 closed.

# 本地终端
$ ssh -p 22 root@124.223.106.211 -o ServerAliveInterval=60
ssh: connect to host 124.223.106.211 port 22: Connection refused

ssh 使用密钥登录

Tips: 密钥读音是【mì yuè】还是【mì yào】?

百度百科: 根据《现代汉语词典(第7版)》,【密钥】mì yuè,口语中多读 mì yào 。

查看已存在的公钥

$ ls -al ~/.ssh

id_rsa.pub
id_ecdsa.pub
id_ed25519.pub

如果在本地终端,暂定一段时间就卡住了,自动断开服务器链接了。可以增加一个参数 ServerAliveInterval 。

ssh -p 22 root@43.152.198.184 -o ServerAliveInterval=60

ServerAliveInterval:客户端在向服务器发送空数据包之前(等待连接保持活动状态)将等待的秒数。这里设置成 60 秒,就是在终端没有操作是,每60秒告诉服务器一次,客户端还在保持连接。

创建一个新的ssh秘钥

你需要用到 ssh-keygen,它是 OpenSSH 的组件,在 Linux 和 macOS 中一般都自带了。

算法:

常见的 SSH 登录密钥使用 RSA 算法。

ed25519 的安全性在 RSA 2048 与 RSA 4096 之间,且性能在数十倍以上。

RSA算法,是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。
当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。

ed25519 加密解密很快,生成时间短而且安全性更高,rsa 则加密解密稍慢,安全性没有 ed25519 高。

生成一个新的密钥:

# 使用 ed25519 算法
$ ssh-keygen -t ed25519 -C "your_email@example.com"

# 使用 rsa 算法
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

可以直接指定生成的文件名称:

cd ~/.ssh
ssh-keygen -t ed25519 -f id_ed25519  -C "your_email@qq.com"
ssh-keygen -t ed25519 -f github_id_ed25519  -C "your_email@github.com"
ssh-keygen -t ed25519 -f gitee_id_ed25519  -C "your_email@gitee.com"

注意:示例里的邮箱地址,请改成你自己的邮箱地址。

如果您创建了不同名称的密钥,或者您要添加不同名称的现有密钥,请将命令中的 id_ed25519 替换为您的私钥文件的名称。

$ ssh-add ~/.ssh/id_ed25519

ssh-copy-id 命令 – 复制公钥到远程主机

ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上。
ssh-copy-id 命令也会给远程主机的用户主目录(home)和 ~/.ssh, 和 ~/.ssh/authorized_keys 设置合适的权限。

ssh-copy-id -i ~/.ssh/ssh_id_ed25519.pub root@124.221.154.175

## 使用 -p 指定端口
ssh-copy-id -i ~/.ssh/ssh_id_ed25519.pub -p 22001 root@124.223.106.211

在本地机器上的目录 ~/.ssh/ 下创建 config 文件,并以如下格式编辑配置文件:

Host web_master
  Hostname 124.223.106.211
  Port 22211
  User root
  ServerAliveInterval 60
  ServerAliveCountMax 10
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/ssh_id_ed25519

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

ServerAliveInterval:客户端在向服务器发送空数据包之前(等待连接保持活动状态)将等待的秒数。

ClientAliveInterval:服务器在向客户端发送空数据包之前(等待连接保持活动状态)将等待的秒数。

将值设置为0(默认值)将禁用这些功能,因此如果空闲时间太长,连接可能会断开。

在服务器上查看(vhost):

authorized_keys

cat ~/.ssh/authorized_keys

注意,authorized_keys文件的权限要设为644,即只有文件所有者才能写。如果权限设置不对,SSH 服务器可能会拒绝读取该文件。

$ chmod 644 ~/.ssh/authorized_keys

将公钥 ssh_id_ed25519.pub 的内容填写在里面。 如果有多个公钥(多台电脑都想登录这个服务器),每行一个公钥。

直接使用 ssh + 自定义的 host 名,就可以直接登录到服务器了。

ssh web_master

最后,可以在 服务器修改 /etc/ssh/sshd_config 文件,将允许账户密码登录的配置项去掉,只通过密钥登录。

# 将允许密码登录的配置 PasswordAuthentication 注释掉
# PasswordAuthentication yes

感谢阅读,谢谢.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐