A、B两台Linux终端,其中需要A通过SSH远程登录B时,能够免密码直接通过用户名进行登录的配置
1、什么是公私钥
总结
原理
(1)客户机向远程主机发送登录请求,并且把自己的公钥发送给远程主机。
(2)远程主机收到用户的登录请求,首先判断对应的用户主目录下是否存在.ssh/authorized_keys并且这个文件中有没有有客户机的公钥时;
如果条件不成立,就会使用账户口令登录登录的方式,同时向客户机返回
如果条件成立,则会使用公私钥登录的方式,同时向客户机返回
账户口令登录登录的方式:(每次都需要输入密码,不能免密钥登录)
(3)用户使用这个公钥,将登录密码加密后,发送回来。
(4)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
基于公私钥登录的方式:(可以实现 免密钥登录)
能用到这种方式的前提是,用户已经将自己的公钥储存在远程主机上,这个是重点,也就是所谓的“公密钥分发”。
(3)用户用自己的私钥解密“随机信息”后,接着用“私钥”加密签名该“随机信息”,最后再用远程主机的公钥加密发送给远程主机。
(4)远程主机先用自己的私钥解密,然后在用事先储存的客户机公钥进行解密认证,得出“随机信息”,如果“随机信息”正确,就证明用户是可信的,直接允许登录shell,不再要求密码。
ssh-copy-id命令可以把本地的ssh公钥文件安装到远程主机对应的账户下。
达到的功能:
ssh-copy-id - 将你的公共密钥填充到一个远程机器上的authorized_keys文件中。
使用模式:
ssh-copy-id [-i [identity_file]] [user@]machine
描述:
ssh-copy-id 是一个实用ssh去登陆到远程服务器的脚本(假设使用一个登陆密码, 因此,密码认证应该被激活直到你已经清理了做了多个身份的使用)。它也能够改变远程用户名的权限,/.ssh和/.ssh/authorized_keys删除群组写的权限(在其它方面,如果远程机上的sshd在它的配置文件中是严格模式的话,这能够阻止你登陆。)。
如果这个 “-i”选项已经给出了,然后这个认证文件(默认是~/.ssh/id_rsa.pub)被使用,不管在你的ssh-agent那里是否有任何密钥。
另外,命令 “ssh-add -L” 提供任何输出,它使用这个输出优先于身份认证文件。如果给出了参数“-i”选项,或者ssh-add不产生输出,然后它使用身份认证文件的内容。一旦它有一个或者多个指纹,它使用ssh将这些指纹填充到远程机~/.ssh/authorized_keys文件中。
# 临时关闭
systemctl stop iptables
service iptables stop
# 永久关闭
systemctl disable iptables
chkconfig iptables off
# 临时关闭
systemctl stop firewalld.service // 停止firewall
# 永久关闭
systemctl disable firewalld.service // 禁止firewall开启启动
firewall-cmd --state // 查看firewall状态
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
# 临时关闭(0为关闭,1为开启)
setenforce 0
# 永久关闭
修改 /etc/selinux/config 文件
将 SELINUX=enforcing 修改为 disabled
重启生效
# 查看状态
getenforce
/usr/sbin/sestatus -v
如果使用root帐号进行远程登录,需要授权 root 允许远程登录的权限
# 修改 /etc/ssh/sshd_config
PermitRootLogin yes //允许root登录
PermitEmptyPasswords yes //允许不输入密码登录
# 重启 sshd 服务生效
systemctl restart sshd
# 编辑 /etc/ssh/sshd_config 文件,去掉下面几行的注释 '#'
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 重启 sshd 服务
systemctl restart sshd
service sshd restart
# 执行命令,三次默认回车
ssh-keygen -t rsa
# 生成两个文件
id_rsa: 私钥
id_rsa.pub:公钥
方法一:创建文件并进行拷贝,将公钥导入到另一台终端的认证文件中
cat id_rsa.pub >> ~/.ssh/authorized_keys
设置文件访问权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
方法二:在本机通过ssh-copy-id
命令直接将公钥分配给目标终端
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
# 可简写
ssh-copy-id
// 其中在 /etc/hosts中 配置,用户默认为本机运行用户