在 Ubuntu 22.04 上配置 SSH 密钥的详细过程如下:
1.确保安装了ssh,如果没有请安装
sudo apt update && sudo apt upgrade ##更新系统
sudo apt install openssh-server ##安装ssh
2. 生成 SSH 密钥对
生成密钥对:
运行以下命令来生成一个新的 SSH 密钥对:
ssh-keygen ##生成ssh密钥对
上图①②③意思为:
①生成密钥的位置,括号里为默认生成位置,按Enter确认。
②让你设置一个密码短语(passphrase)来保护你的私钥,默认Enter就是没有(为了安全非常建议设置)
③在输一次密码
3.进入密钥的生成位置,将公钥(id_rsa.pub)复制到远程服务器
cd .ssh/
ssh-copy-id -i 公钥路径 username@remote_host
****注****
-i 指定公钥的位置
公钥路径:把生成密钥时括号()里复制过来
username@remote_host: 注意不是本机的用户和IP地址,是远程服务器的用户和IP地址。
例如:本机用户名:admin,ip:192.168.100.2;远程服务器用户名:bai,ip:172.168.100.11那就这样来写:ssh-copy-id -i /admin/.ssh/id_rsa.pub bai@172.168.100.11
4.通过 SSH 连接到远程服务器,确保公钥有足够权限:
ssh username@remote_host
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
5.禁用ssh密码身份验证,(在你的远程服务器上操做)
ssh username@remote_host
sudo vim /etc/ssh/sshd_config
找到以下代码,将yes改为no,如果没有可以自行添加:
PasswordAuthentication no ##禁用密码认证
ChallengeResponseAuthentication no ##禁用其他身份验证方式(可选)
UsePAM no
保存退出重启ssh,生效配置
sudo systemctl restart ssh ##重启ssh
6. 添加公钥到 SSH 代理,在本机上操作(如果设置了私钥的密码,每次登陆不想输入私钥密码可以这样做)
启动 ssh-agent:
在终端中输入以下命令启动 ssh-agent:
eval "$(ssh-agent -s)"
你会看到类似如下的输出:
Agent pid 1234
添加私钥到 SSH 代理:
使用以下命令将私钥添加到 ssh-agent:
ssh-add ~/.ssh/id_rsa
完成上述步骤后,你可以测试 SSH 连接是否成功,确认你能够无密码地登录到远程主机:
ssh username@remote_host