服务端 配置

安装 (可选)

[!NOTE]

一般系统都会自带

apt install -y ssh
systemctl enable sshd --now

防火墙 (可选)

[!NOTE]

没有防火墙的话请直接跳过

firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

SSH 主要配置

编辑 /etc/ssh/sshd_config 文件

...
Port 22                                                         # 端口
# @前为用户名,*代表任何用户
DenyUsers *@*.example.com                                       # 拒绝用户
AllowUsers  *@192.168.8.*                                       # 允许用户
#//优先级 DenyUsers,AllowUsers,DenyGroups,AllowGroups
PermitRootLogin no                                              # root用户登陆限制
    # yes                                                       # 无限制
    # no                                                        # 不允许
    # without-password                                          # 仅允许密钥登陆
    # prohibit-password                                         # 仅允许密钥登陆
    # forced-commands-only                                      # 仅允许密钥登陆,仅允许已授权命令
PermitEmptyPasswords no                                         # 空密码        yes-允许    no-拒绝
PasswordAuthentication no                                       # 密码登陆    yes-允许    no-拒绝
AuthenticationMethods publickey keyboard-interactive:pam        # 认证方式    或
AuthenticationMethods publickey,keyboard-interactive:pam        # 认证方式    且
RSAAuthentication yes                                           #设置是否使用RSA算法进行安全验证
...

SSH 推荐配置

禁止 空密码

禁止 root 登录

禁止 密码认证,只对于 SSH 登录有效

PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no

客户端 生成密钥对

# 生成 id_rsa 和 id_rsa.pub
ssh-keygen \
    -t rsa `#加密算法[ecdsa|rsa|dsa|ed25519],默认rsa`\
    -b 4096 `#密钥长度`\
    `#加密方式[最小-默认-最大]`\
    `#rsa[1024-3072-]`\
    `#dsa[-1024-]`\
    `#ecdsa[256,384,521]`\
    `#ed25519[不支持,忽略]`\
    -C comment `#注释 -c修改注释,默认为user@host `\
    -p password `#修改密码 -P newpassword密码(旧),-N oldpassword密码(新)`\
    -f foobar `#指定输出文件`\

推荐操作

# 生成 id_rsa 和 id_rsa.pub
ssh-keygen -t ed25519 -f example

密钥对默认生成位置为 ~/.ssh

[!TIP]

如果公钥文件丢失,可重新生成对应公钥

ssh-keygen -y -f id_rsa

[!IMPORTANT]

密钥文件应确保权限为 0600

chmod 0600 ~/.ssh/id_rsa

客户端 写入公钥文件到服务端

或者直接复制 id_rsa.pub 内容到服务器 ~/.ssh/authorized_keys

# ssh-copy-id -i 公钥文件 服务端用户名@主机名
ssh-copy-id -i id_rsa.pub username@hostname

authorized_keys 文件示例

ssh-rsa ................ username@hostname

[!TIP]

仅允许已授权命令

command="ls,cat,ps,cd" ssh-rsa ................ username@hostname

密钥方式登陆 ~/.ssh/authorized_keys #公钥 服务端 ~/.ssh/id_rsa #密钥 客户端

客户端 连接

ssh user@host
ssh host \
-l user `#指定用户名,默认本机当前用户名`\
-p 22   `#指定端口 默认22`\
-i id_rsa `#指定密钥文件,默认为~/.ssh/id_rsa`\