(目录)
服务器A要免密登录服务器B,步骤如下
生成密钥(A)
# 生成密钥
ssh-keygen
# 提示如下信息
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your public key has been saved in /root/.ssh/id_rsa.pub.
默认生成的公钥保存在/root/.ssh/id_rsa.pub
文件中。
添加公钥(B)
将公钥添加到home目录下的.ssh/authorized_keys中,如果没有该文件,可以自己创建一个。注意权限要修改成600
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
cat id_rsa.pub >> .ssh/authorized_keys
启动密钥验证(B)
vi /etc/ssh/sshd_config
修改以下内容
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 重启sshd服务
systemctl restart sshd.service
以上操作完成后,如果从A服务器无法直接ssh到B服务器,检查防火墙配置和ssh允许访问列表
检查防火墙(B)
检查ssh默认的22端口是否开放给A服务器
# 检查防火墙
firewall-cmd --list-all
# 开放防火墙22端口给A服务器(假设IP为192.168.1.100)
# 规则立即生效
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" port port="22" protocol="tcp" accept'
# 写入配置文件,防火墙重启后规则依旧生效
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" port port="22" protocol="tcp" accept' --per
设置允许ssh访问列表(B)
如果防火墙开放后依旧无法访问,还可以检查是否设置了允许ssh访问的列表
# 查看允许ssh访问列表明细
cat /etc/hosts.allow
# 如果不包含sshd:* 需要把A服务器单独添加到列表中
# 添加A服务器到允许ssh访问列表
echo "sshd: 192.168.1.100" >> /etc/hosts.allow