温馨提示×

Ubuntu SSH怎样实现自动登录

小樊
59
2025-11-06 13:12:36
栏目: 智能运维

Ubuntu SSH实现自动登录(免密登录)的推荐方法

一、前提条件:安装并启动SSH服务

若尚未安装SSH服务,需先通过以下命令安装并启动:

sudo apt update
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh  # 设置开机自启

二、核心步骤:配置SSH密钥对免密登录

1. 生成本地SSH密钥对

在本地Ubuntu终端执行以下命令,生成公钥(id_rsa.pub)和私钥(id_rsa):

ssh-keygen -t rsa -b 4096

按提示操作(直接回车接受默认路径~/.ssh/id_rsa,私钥密码留空以实现完全免交互)。

2. 将公钥复制到远程服务器

使用ssh-copy-id命令将本地公钥自动追加到远程服务器的~/.ssh/authorized_keys文件中(替换username为远程用户名,remote_host为远程IP或域名):

ssh-copy-id username@remote_host

首次连接会提示确认服务器指纹,输入yes并回车,随后输入远程用户密码完成复制。

3. 配置SSH服务允许公钥认证

登录远程服务器,编辑SSH主配置文件:

sudo nano /etc/ssh/sshd_config

找到并修改以下参数(取消注释或新增):

PubkeyAuthentication yes      # 启用公钥认证
AuthorizedKeysFile .ssh/authorized_keys  # 指定授权文件路径
PasswordAuthentication no     # 关闭密码登录(可选,建议确认密钥登录成功后再关闭)

保存文件并重启SSH服务使配置生效:

sudo systemctl restart sshd

4. 测试自动登录

在本地终端执行以下命令,若无需输入密码即可登录远程服务器,则配置成功:

ssh username@remote_host

三、可选优化:简化SSH连接命令

若需通过别名快速连接,可编辑本地~/.ssh/config文件(不存在则创建):

nano ~/.ssh/config

添加以下内容(替换remote_host为远程IP/域名,username为远程用户名):

Host remote_alias  # 自定义连接别名
    HostName remote_host
    User username
    IdentityFile ~/.ssh/id_rsa  # 指定私钥路径(默认即可)
    Port 22                     # 指定SSH端口(默认22可省略)

保存后,直接执行ssh remote_alias即可快速连接。

四、注意事项

  1. 权限设置:确保远程服务器上~/.ssh目录权限为700chmod 700 ~/.ssh),~/.ssh/authorized_keys文件权限为600chmod 600 ~/.ssh/authorized_keys);本地私钥文件权限需设置为600chmod 600 ~/.ssh/id_rsa),否则可能导致认证失败。
  2. 安全提示:关闭密码登录前,务必确认公钥认证已正常工作,避免因配置错误导致无法登录。
  3. 多用户场景:若需为其他用户配置自动登录,重复上述步骤并将公钥复制到对应用户的~/.ssh/authorized_keys文件中即可。

0