Ubuntu SSH实现自动登录(免密登录)的推荐方法
若尚未安装SSH服务,需先通过以下命令安装并启动:
sudo apt update
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh # 设置开机自启
在本地Ubuntu终端执行以下命令,生成公钥(id_rsa.pub)和私钥(id_rsa):
ssh-keygen -t rsa -b 4096
按提示操作(直接回车接受默认路径~/.ssh/id_rsa,私钥密码留空以实现完全免交互)。
使用ssh-copy-id命令将本地公钥自动追加到远程服务器的~/.ssh/authorized_keys文件中(替换username为远程用户名,remote_host为远程IP或域名):
ssh-copy-id username@remote_host
首次连接会提示确认服务器指纹,输入yes并回车,随后输入远程用户密码完成复制。
登录远程服务器,编辑SSH主配置文件:
sudo nano /etc/ssh/sshd_config
找到并修改以下参数(取消注释或新增):
PubkeyAuthentication yes # 启用公钥认证
AuthorizedKeysFile .ssh/authorized_keys # 指定授权文件路径
PasswordAuthentication no # 关闭密码登录(可选,建议确认密钥登录成功后再关闭)
保存文件并重启SSH服务使配置生效:
sudo systemctl restart sshd
在本地终端执行以下命令,若无需输入密码即可登录远程服务器,则配置成功:
ssh username@remote_host
若需通过别名快速连接,可编辑本地~/.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即可快速连接。
~/.ssh目录权限为700(chmod 700 ~/.ssh),~/.ssh/authorized_keys文件权限为600(chmod 600 ~/.ssh/authorized_keys);本地私钥文件权限需设置为600(chmod 600 ~/.ssh/id_rsa),否则可能导致认证失败。~/.ssh/authorized_keys文件中即可。