SSH密钥认证是一种更安全的远程登录方式,可替代传统密码认证,避免密码泄露风险。以下是Ubuntu系统中配置SSH密钥的详细步骤:
在本地Ubuntu机器上打开终端,运行以下命令生成RSA密钥对(推荐4096位长度,安全性更高):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa:指定密钥类型为RSA(常用且兼容性好);-b 4096:设置密钥长度为4096位(增强安全性);-C "your_email@example.com":添加注释(通常用邮箱标识密钥用途,可选)。~/.ssh/id_rsa,直接按Enter使用默认路径);ls -l ~/.ssh/id_rsa*,应看到id_rsa(私钥,需严格保密)和id_rsa.pub(公钥,可共享)两个文件。有两种常用方法将公钥添加到远程服务器的authorized_keys文件中(该文件存储允许登录的公钥):
ssh-copy-id(推荐,自动完成)运行以下命令,将本地公钥复制到远程服务器(替换user为远程服务器用户名,remote_host为服务器IP或域名):
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
输入远程服务器用户的密码后,公钥会自动追加到~/.ssh/authorized_keys文件中,无需手动操作。
ssh-copy-id的情况)cat ~/.ssh/id_rsa.pub | xclip -selection clipboard # 需安装xclip(`sudo apt install xclip`)
或直接用文本编辑器打开id_rsa.pub,复制内容。ssh user@remote_host
.ssh目录(若不存在)并设置权限:mkdir -p ~/.ssh
chmod 700 ~/.ssh
authorized_keys文件中,并设置权限:echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
注意:authorized_keys文件的权限必须为600(仅所有者可读写),否则SSH会拒绝使用该文件。编辑远程服务器的SSH配置文件(/etc/ssh/sshd_config),启用公钥认证并禁用密码认证(可选):
sudo nano /etc/ssh/sshd_config
yes):PubkeyAuthentication yes # 启用公钥认证
AuthorizedKeysFile .ssh/authorized_keys # 指定公钥文件路径
PasswordAuthentication no
sudo systemctl restart ssh
若配置错误导致无法登录,可通过控制台(如云服务器的控制台)恢复密码认证。在本地终端运行以下命令,测试是否能通过密钥登录远程服务器(替换user和remote_host):
ssh user@remote_host
编辑本地~/.ssh/config文件(若不存在则创建),添加常用服务器的配置,简化ssh命令:
nano ~/.ssh/config
Host myserver # 自定义服务器别名(如`myserver`)
HostName 192.168.1.100 # 服务器IP或域名
User ubuntu # 远程服务器用户名
Port 22 # SSH端口(默认22,若修改过需填写)
IdentityFile ~/.ssh/id_rsa # 指定私钥文件路径
ssh myserver代替ssh user@192.168.1.100,更便捷。若私钥设置了密码,可使用ssh-agent缓存私钥密码,避免每次使用私钥时重复输入:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
输入私钥密码后,该私钥会被缓存(默认直到终端关闭)。ssh-add -l
ssh-add -d ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa添加到~/.bashrc文件末尾,每次登录时自动加载:echo "ssh-add ~/.ssh/id_rsa" >> ~/.bashrc
source ~/.bashrc # 使配置立即生效
通过以上步骤,即可在Ubuntu系统中完成SSH密钥配置,实现安全、便捷的远程登录。