ssh 配置密钥登录(终端操作篇)

引言

如果你拥有服务器的控制权,我推荐你看「控制台操作篇」,而非到这里花时间折腾。

如果你对 ssh 密码和密钥登录没有一丁点了解,我推荐你先泛读一遍「控制台操作篇」。

ssh-keygen 和 ssh-copy-id 工具

ssh-keygen:用于管理密钥,可生成 ssh 密钥对

  • 生成 “公私钥对”(私钥 + 公钥),支持多种加密算法(如 RSA、ED25519 等),并可设置密钥密码(可选,增强私钥安全性)。

ssh-copy-id:一键复制公钥到远端服务器

  • 将本地指定的公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中,并自动创建目录(若不存在)、设置正确权限(~/.ssh 为 700authorized_keys 为 600)。
# 常用生成密钥对选项
ssh-keygen -t ed25519 -f ~/.ssh/my_work_key -C "lilwhalecn@gmail.com" -N ""
# 设置或修改私钥密码
ssh-keygen -p -f ~/.ssh/my_work_key
  • -t <算法>:指定密钥类型(推荐 ed25519,其次 rsa)。
  • -f <路径>:指定了密钥文件保存路径及名字(默认在 ~/.ssh/ 目录)。
  • -C <注释>:添加注释(通常用邮箱,当然也可以用单词表示用途)。
  • -b <位数>:指定密钥长度(仅对 RSA 等算法有效,如 RSA 推荐 2048 或 4096)。
  • -N <密码>:设置私钥的密码(空字符串表示无密码,一般不显示输入此选项,直接回车即可)。
  • -P <旧密码>:修改已有私钥的密码时使用(也可用于取消密码,新密码直接回车即可)。

上述两个案例覆盖了常用选项。

另外,如果想要给私钥设置密码增加安全性,ssh-agent 是一个密钥管理器,用于缓存 SSH 私钥的密码,避免每次使用密钥时都需要手动输入密码。如果有多密钥且都设置了不同密码,可以了解一下。

ssh-copy-id -i ~/.ssh/my_work_key.pub -p 2222 root@192.168.1.100
  • -i <路径>:指定使用的公钥文件,需要完整路径(不指定默认用 ~/.ssh/id_rsa.pub)。
  • -p <路径>:指定远程 SSH 端口(不指定则默认 22 端口)。

拷贝完后,使用 ssh -i <私钥文件路径> user_name@server_ip 验证一下是否可以登录成功。

注意:如果此时已经关闭了密码验证一定要留一个 ssh 窗口,防止配置失败被锁外面。

使用 ssh-keygen 生成密钥对

图片[1]-ssh 配置密钥登录(终端操作篇) - 渔网札记-渔网札记

可以看到,不添加 -N 选项,也会让你添加密码,此时直接回车则表明不添加密码。

使用 ssh-copy-id 部署公钥

图片[2]-ssh 配置密钥登录(终端操作篇) - 渔网札记-渔网札记

部署后一定要使用私钥登录检查一下,如果你同时关闭了密码登录,请注意一定要保留一个会话框,防止被锁在外面登录不进服务器。

如果你没有这个工具也可以手动部署:

# 选中输出的所有内容(从 ssh-ed25519 开始到注释结束)并复制
cat ~/.ssh/your_key_name.pub
# 登录服务器后执行...
ssh user_name@server_ip

# 1. 创建 .ssh 目录(如果它不存在的话)
mkdir -p ~/.ssh

# 2. 将你刚才复制的公钥内容,追加到 authorized_keys 文件中
# 注意:这里的引号很重要,确保公钥被完整粘贴(当然也可以用 vim)
echo "把你本地复制的公钥内容完整粘贴到这里" >> ~/.ssh/authorized_keys

# 3. 【至关重要】设置正确的目录和文件权限!
# 如果权限不正确,SSH服务器会因为安全原因拒绝使用这个密钥
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

chmod 700 ~/.ssh:表示 .ssh 目录只有你自己(属主)有读、写、执行的权限。

chmod 600 ~/.ssh/authorized_keys:表示 authorized_keys 文件只有你自己有读、写的权限。

拓展

开启密钥登录后,如果你同时拥有 sudo 权限,我推荐你关闭密码登录:

服务器禁用密码登录-渔网札记
服务器禁用密码登录-渔网札记
lilwhale的头像-渔网札记4个月前
032051118
© 版权声明
喜欢就支持一下吧
点赞109赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码快捷回复

    暂无评论内容