服务端 配置
安装 (可选)
[!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`\