0%

自动登录SSH

SSH 自动登录配置:免密码连接服务器的完整步骤

SSH 自动登录通过密钥认证实现,无需每次输入密码即可连接服务器,尤其适合频繁远程操作的场景。以下是详细的配置步骤和注意事项。

在客户端生成密钥对

首先在本地客户端(如你的电脑)生成 SSH 密钥对(公钥和私钥),过程如下:

生成密钥对

使用 ssh-keygen 命令生成,支持 RSA、DSA、ED25519 等算法(推荐 RSA 或 ED25519):

1
2
# 生成 RSA 算法的密钥对(默认路径 ~/.ssh/)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_ssh_key
  • -t rsa:指定加密算法为 RSA(安全性高,兼容性好)。
  • -b 4096:密钥长度 4096 位(比默认的 2048 位更安全)。
  • -f ~/.ssh/my_ssh_key:指定密钥文件路径和名称(避免与默认密钥冲突)。

密钥生成过程

执行命令后会出现交互提示:

1
2
3
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): # 按回车(不设置密钥密码,实现完全自动登录)
Enter same passphrase again: # 再次回车确认

生成后,在 ~/.ssh/ 目录下会产生两个文件:

  • my_ssh_key:私钥(重要!不可泄露,仅保存在本地)。
  • my_ssh_key.pub:公钥(需要上传到服务器)。

将公钥上传到服务器

手动上传公钥(通用方法)

步骤 1:登录服务器

先用密码登录到目标服务器(假设服务器 IP 为 192.168.1.100,用户名为 admin):

1
ssh admin@192.168.1.100
步骤 2:创建 .ssh 目录(若不存在)

服务器上的用户主目录下需要有 .ssh 目录,且权限必须正确:

1
2
mkdir -p ~/.ssh  # 创建目录(-p 确保父目录存在)
chmod 700 ~/.ssh # 权限设置为仅所有者可读写执行
步骤 3:上传公钥内容

回到本地客户端,复制公钥内容:

1
cat ~/.ssh/my_ssh_key.pub

将输出的公钥字符串(类似 ssh-rsa AAAAB3NzaC1yc2EAAA...)复制到剪贴板。

步骤 4:写入服务器的 authorized_keys

在服务器上,将公钥内容追加到 ~/.ssh/authorized_keys 文件:

1
2
nano ~/.ssh/authorized_keys  # 打开文件,粘贴公钥内容,保存退出
chmod 600 ~/.ssh/authorized_keys # 权限设置为仅所有者可读写

自动上传公钥(简化方法)

如果客户端安装了 ssh-copy-id 工具(Linux/macOS 通常自带),可一键上传:

1
ssh-copy-id -i ~/.ssh/my_ssh_key.pub admin@192.168.1.100
  • -i:指定公钥文件路径。
  • 执行后输入服务器用户的密码,公钥会自动添加到 authorized_keys 并设置正确权限。

测试自动登录

配置完成后,尝试从客户端连接服务器,无需输入密码即可登录:

1
ssh -i ~/.ssh/my_ssh_key admin@192.168.1.100
  • -i:指定私钥文件(若使用默认密钥 id_rsa,可省略该参数)。

进一步简化:配置 SSH 别名

为避免每次输入服务器 IP、用户名和密钥路径,可通过 ~/.ssh/config 文件定义登录别名:

创建 / 编辑配置文件

1
nano ~/.ssh/config

添加服务器配置

1
2
3
4
5
6
# 定义一个名为 "myserver" 的别名
Host myserver
HostName 192.168.1.100 # 服务器 IP 或域名
User admin # 登录用户名
IdentityFile ~/.ssh/my_ssh_key # 私钥路径
Port 22 # SSH 端口(默认 22,非默认需指定)

使用别名登录

保存后,直接通过别名连接:

1
ssh myserver  # 一键登录,无需任何额外参数

增强安全性(可选)

  1. 禁用服务器密码登录
    为防止暴力破解,配置完成后可在服务器上禁用密码登录,仅允许密钥认证:

    1
    2
    # 登录服务器后编辑 SSH 配置
    sudo nano /etc/ssh/sshd_config

    修改以下参数:

    1
    2
    PasswordAuthentication no  # 禁用密码登录
    PubkeyAuthentication yes # 启用公钥认证(默认已开启)

    重启 SSH 服务生效:

    1
    sudo systemctl restart sshd  # Ubuntu/Debian/CentOS 通用
  2. 设置密钥密码(passphrase)
    若担心私钥泄露,生成密钥时可设置密码(passphrase),结合 ssh-agent 缓存密码,兼顾安全性和便捷性:

    1
    2
    3
    4
    5
    # 启动 ssh-agent 进程
    eval $(ssh-agent -s)

    # 将私钥添加到缓存(仅首次需要输入 passphrase)
    ssh-add ~/.ssh/my_ssh_key

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10