跳过正文
  1. Posts/

SSH简单配置

·708 字·2 分钟· loading · loading · · ·
ICE345
作者
ICE345
CS Student | System | Linux | OCaml

一、在客户端生成 SSH 密钥对
#

在你的本地客户端(例如你的笔记本或开发机器)上:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

说明:

  • -t rsa:生成 RSA 类型的密钥;
  • -b 4096:密钥长度,建议至少 4096;
  • -C:注释,通常填邮箱方便识别。

系统会提示你保存文件位置,默认是:

~/.ssh/id_rsa  (私钥)
~/.ssh/id_rsa.pub  (公钥)

也可以自定义文件名,方便区分不同用途。


二、将公钥复制到服务器
#

假设你的服务器 IP 是 192.168.1.108,用户名是 ice345

方法一(推荐)使用 ssh-copy-id 自动复制:
#

这个通常都会无法成功 copy 到服务器上

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

系统会提示输入服务器密码,输入一次即可自动把公钥复制到服务器的 ~/.ssh/authorized_keys 里,并设置好权限。

方法二:手动复制
#

如果没有 ssh-copy-id

  1. 查看公钥内容:
cat ~/.ssh/id_rsa.pub
  1. 登录服务器(使用密码):
  1. 在服务器上创建 ~/.ssh/ 目录(如果还没有):
mkdir -p ~/.ssh
chmod 700 ~/.ssh
  1. 编辑 authorized_keys 文件:
nano ~/.ssh/authorized_keys

将你刚才 cat 出来的公钥粘贴进去,保存。

  1. 修改权限:
chmod 600 ~/.ssh/authorized_keys

三、测试免密登录
#

回到客户端,执行:

如果一切顺利,不需要输入密码就能登录。


四、服务器配置 SSH 服务
#

在服务器上编辑 sshd 配置文件:

sudo nano /etc/ssh/sshd_config

重点配置项:

# 允许公钥认证(默认通常是yes)
PubkeyAuthentication yes

# 允许密码登录(如不想允许可以关闭)
PasswordAuthentication yes  # 或 no

# 允许使用 authorized_keys 文件
AuthorizedKeysFile .ssh/authorized_keys

# 禁止 root 直接登录(安全建议)
PermitRootLogin no

修改后,重启 ssh 服务:

sudo systemctl restart sshd

五、额外注意事项
#

  • 如果你希望完全关闭密码登录,保证只允许密钥登录,可以把 PasswordAuthentication 改为 no
  • 确认目录权限正确:
目录/文件权限
~/.ssh/700
~/.ssh/authorized_keys600
  • 防火墙确认开放 22 端口。

六、完整快速版流程总结
#

# 1. 客户端生成密钥
ssh-keygen -t rsa -b 4096

# 2. 复制公钥到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip

# 3. 测试免密登录
ssh user@server_ip

# 4. 修改服务器 /etc/ssh/sshd_config(可选)
sudo nano /etc/ssh/sshd_config
# 确认或修改:
PubkeyAuthentication yes
PasswordAuthentication yes (或 no)

# 5. 重启 SSH 服务
sudo systemctl restart sshd