windows下使用xshell通过密钥认证方式免密码登录,配置方式参考WINDOWS 下 XSHELL 密钥登录 LINUX 服务器。
本文是linux服务器之间通过密钥认证方式实现免密码登录。
实现目标
linux服务器2台,分别为 11.0.1.166(B)/11.0.1.167(C),要求 C 可以免密码直接使用 ssh username@IP 方式登录到其他2台服务器。
配置过程
在C服务器生成密钥对
ssh-keygen
公钥复制至服务器B
将公钥复制至服务器B的 /root/.ssh/authorized_keys
复制方式1
使用ssh-copy-id方法复制,直接将公钥内容添加至authorized_keys文件ssh-copy-id -i /root/.ssh/id_rsa.pub root@11.0.1.166
复制方式2
scp复制公钥文件至服务器B并重命名为authorized_keysscp /root/.ssh/id_rsa.pub root@11.0.1.166://root/.ssh/authorized_keys
说明
- .ssh等不存在的目录可自己创建。
- 确认.ssh文件夹权限为700,若不是,请
chmod 700 /home/username/.ssh
修改。 - 确认authorized_keys文件权限为600,若不是,请
chmod 600 /home/username/.ssh/authorized_keys
修改。 - 确认iptables及selinux状态,建议均关闭。
测试连接
ssh root@11.0.1.166
错误排查
使用ssh密钥认证方式访问失败,可以通过查看连接过程或日志的方式排查。 ssh -v root@11.0.1.166
该方式会打印出连接的详细过程。cat /var/log/secure
在centos 6 中查看该日志文件可以看到连接的错误信息。多个公钥处理方式
有时候会出现同一台服务器同一个用户同时保存多个公钥的情况,此时公钥文件可以都保存在authorized_keys,但是需要添加换行符,格式如下
使用 cat id_rsa.pub > authorized_keys 或者 ssh-copy-id 方式均为直接追加至末尾,不可用。参考文章
- OpenSSH 密钥管理之理解RSA/DSA认证
- ssh-keygen 中文手册
- linux配置ssh公钥认证