设置linux公钥,私钥登录ssh登录
步骤 1:本地生成 SSH 密钥对(若未生成)

禁用前设置一个正常的用户登录
首先,新创建用户并且自动生成家目录
# 创建用户并自动创建家目录
sudo useradd -m newuser# (可选)设置密码(若后续仅用密钥登录,可跳过)
sudo passwd newuser# (可选)赋予 sudo 权限(根据需求决定)
sudo usermod -aG sudo newuser其次将生成好的公钥主备好(一般使用步骤 2)
# 切换到新用户家目录
cd /home/newuser# 创建 .ssh 目录并设置权限(关键:权限必须正确,否则 SSH 会拒绝)
sudo mkdir -p .ssh
sudo chmod 700 .ssh  # 仅所有者可读写执行
sudo chown -R newuser:newuser .ssh  # 确保归属新用户# 将公钥内容写入 authorized_keys
# 方法1:如果公钥在本地,通过 scp 上传后追加
sudo cat /path/to/newuser.pub >> .ssh/authorized_keys# 方法2:直接手动输入公钥(按 Ctrl+D 结束输入)
sudo nano .ssh/authorized_keys  # 粘贴公钥内容后保存# 设置 authorized_keys 权限(关键)
sudo chmod 600 .ssh/authorized_keys  # 仅所有者可读写
sudo chown newuser:newuser .ssh/authorized_keys测试登录
# 假设私钥文件为 newuser_private_key
ssh -i /path/to/newuser_private_key newuser@服务器IP首先,新创建用户并且自动生成家目录
# 创建用户并自动创建家目录
sudo useradd -m newuser# (可选)设置密码(若后续仅用密钥登录,可跳过)
sudo passwd newuser# (可选)赋予 sudo 权限(根据需求决定)
sudo usermod -aG sudo newuser其次将生成好的公钥主备好(一般使用步骤 2)
# 切换到新用户家目录
cd /home/newuser# 创建 .ssh 目录并设置权限(关键:权限必须正确,否则 SSH 会拒绝)
sudo mkdir -p .ssh
sudo chmod 700 .ssh  # 仅所有者可读写执行
sudo chown -R newuser:newuser .ssh  # 确保归属新用户# 将公钥内容写入 authorized_keys
# 方法1:如果公钥在本地,通过 scp 上传后追加
sudo cat /path/to/newuser.pub >> .ssh/authorized_keys# 方法2:直接手动输入公钥(按 Ctrl+D 结束输入)
sudo nano .ssh/authorized_keys  # 粘贴公钥内容后保存# 设置 authorized_keys 权限(关键)
sudo chmod 600 .ssh/authorized_keys  # 仅所有者可读写
sudo chown newuser:newuser .ssh/authorized_keys测试登录
# 假设私钥文件为 newuser_private_key
ssh -i /path/to/newuser_private_key newuser@服务器IP禁用服务器密码登录(核心步骤)
- 登录服务器,编辑 SSH 配置文件: - sudo vim /etc/ssh/sshd_config # Ubuntu/Debian 或 CentOS 通用
- 找到并修改以下配置(若不存在,直接添加): - PasswordAuthentication no # 禁用密码登录 PubkeyAuthentication yes # 允许公钥登录(默认开启,确认即可) ChallengeResponseAuthentication no # 禁用挑战响应认证(如密码问答)- 注意:确保 PermitRootLogin配置(若允许 root 登录,需设置为PermitRootLogin prohibit-password或yes,但推荐禁用 root 直接登录,用普通用户 + sudo 管理)。
 
- 注意:确保 
- 保存文件并退出( - Esc→- :wq)。
- 重启 SSH 服务使配置生效: - Ubuntu/Debian:sudo systemctl restart sshd
- CentOS/RHEL:sudo systemctl restart sshd
- 旧系统可能用:sudo service ssh restart或sudo /etc/init.d/ssh restart
 
- Ubuntu/Debian:
步骤 5:再次验证(关键!防止锁死)
务必保持当前 SSH 连接不变,新开一个本地终端,尝试用私钥登录服务器:
ssh 用户名@服务器IP
- 若能登录,说明配置成功,密码登录已被禁用。
- 若登录失败,立即在原连接中修改 sshd_config恢复配置(如将PasswordAuthentication改回yes),重新重启服务排查问题。步骤 5:再次验证(关键!防止锁死)务必保持当前 SSH 连接不变,新开一个本地终端,尝试用私钥登录服务器: ssh 用户名@服务器IP
- 若能登录,说明配置成功,密码登录已被禁用。
- 若登录失败,立即在原连接中修改 sshd_config恢复配置(如将PasswordAuthentication改回yes),重新重启服务排查问题。
root 用户修改其他用户的密码(无需知道原密码)
如果以 root 用户登录,或当前用户有 sudo 权限,可以直接修改其他用户的密码:
sudo passwd 用户名  # 例如:sudo passwd john
直接输入两次新密码即可(无需原密码),格式同上。
新增ssh用户
首先,新创建用户并且自动生成家目录
# 创建用户并自动创建家目录
sudo useradd -m newuser# (可选)设置密码(若后续仅用密钥登录,可跳过)
sudo passwd newuser# (可选)赋予 sudo 权限(根据需求决定)
sudo usermod -aG sudo newuser其次将生成好的公钥主备好(一般使用步骤 2)
# 切换到新用户家目录
cd /home/newuser# 创建 .ssh 目录并设置权限(关键:权限必须正确,否则 SSH 会拒绝)
sudo mkdir -p .ssh
sudo chmod 700 .ssh  # 仅所有者可读写执行
sudo chown -R newuser:newuser .ssh  # 确保归属新用户# 将公钥内容写入 authorized_keys
# 方法1:如果公钥在本地,通过 scp 上传后追加
sudo cat /path/to/newuser.pub >> .ssh/authorized_keys# 方法2:直接手动输入公钥(按 Ctrl+D 结束输入)
sudo nano .ssh/authorized_keys  # 粘贴公钥内容后保存# 设置 authorized_keys 权限(关键)
sudo chmod 600 .ssh/authorized_keys  # 仅所有者可读写
sudo chown newuser:newuser .ssh/authorized_keys测试登录
# 假设私钥文件为 newuser_private_key
ssh -i /path/to/newuser_private_key newuser@服务器IP