Linux-SSH互信

1、安装ssh

对于Linux来说,实现远程管理Linux服务器的过程会用到SSH,一般默认在Linux当中,默认是安装好了的,并且是开启的,防火墙规则中同样是予以放行的,对于一台Linux操作系统而言,可以将其作为SSH的客户端和服务端,且需要安装完成两个包即可。

openssh-clients-7.4p1-11.el7.x86_64
openssh-server-7.4p1-11.el7.x86_64

  • 在这里插入图片描述
2、连接ssh

ssh [username]@[ip地址]
如:ssh [email protected]

在这里插入图片描述
Linux下连接ssh过程中,如果不指定用户名进行连接,则默认会使用你当前登录的用户去连接对方的那个用户。

  • 在连接的过程中可以发现,会询问你是否接受对方证书,然后提示输入密码,接受完成后会在当前用户家目录下下载一个密钥文件,以隐藏格式保存在当前用户家目录下。
  • 一般在连接过程中,建议使用对方的普通身份呢进行ssh连接,然后通过[su -]方式切换到root用户下,此方式更安全,避免ssh被侦听。
3、通过ssh拷贝文件

通过ssh连接完成后,在两个系统之间传输文件的方法:scp(ssh + cy)
scp -pr /root/test.sh [email protected]:/tmp
在这里插入图片描述
通过scp可以复制文件或者文件夹到对方系统当中,如果对方不存在该目录,则复制会失败。
注意:在上述的复制过程中,会弹出要求输入密码的提示,密码正确后即可完成正确复制,那么在写脚本的时候,有时可能会需要远程到远程到其他Linux系统中执行操作,去调用远程系统文件,这时弹出输入密码的提示则不太友好。
例:ssh [email protected] 'mkdir /tmp/centos’
对方系统中会创建该文件夹,但是这个过程会要求输入密码才可,脚本中如果有此情况该如何办呢。可采用ssh互信完成。

4、ssh互信

1、ssh采用非对称加密,公钥和私钥。
ssh-keygen:生成一对密钥,会询问是否给公钥加密码,生成的密钥对会存放在当前用户的家目录下。
2、生成密钥对后,默认会在当前用户的家目录下帮你创建一个隐藏的.ssh文件夹,里面会有几个文件,id-rsa私钥,id-rsa.pub公钥。
在这里插入图片描述
known-hosts(此文件是在ssh连接方用来存放连接到对方的密钥信息的文件)
3、将密钥发送到对方,以期客户端用以连接到自身,
将公钥给对方:ssh-corp-id -i /root/.ssh/id-rsa.pub [email protected](此命令专门用来作为传送公钥来使用)
在这里插入图片描述
4、做完该操作后,发现再去执行连接或者拷贝文件以及执行命令都不会再提示输入密码了,表明将认证方式改为了基于密钥进行的了。

  • 现在我连接对方不需要密码,但是对方连接我依然需要密码!而且传输过去的公钥文件都是基于用户的,想要去往目标系统的其他用户登录,则需要给不同的用户都传送一份密钥。
  • 对于一台设备而言,是可以同时存储多台设备的密钥的,不会执行覆盖,在当前系统当中,同样会在家目录中有一个.ssh文件夹用来接收他人传送过来的密钥文件,该文件为~/.ssh/authorized_keys,任何人传送给该目标系统同一用户的密钥都会保存在内,以追加的形式保存。
    在这里插入图片描述
5、ssh认证过程

1、ssh认证是基于用户而不是基于设备的。
第一次去连接其他设备,提示保存的密钥文件名为known-hosts,存储路径为~/.ssh/known-hosts。如删除,则重新连接时会再次提示下载。
如果连接多个设备,则会在该文件当中后面追加密钥信息,此为连接的对象给定的密钥,
2、公钥
为了放置中间人攻击,会对公钥执行检查,根据提供的公钥与自身的公钥的一致性进行判断,当安装完成ssh后,默认会生成四把钥匙,
在这里插入图片描述
这四把钥匙是通过两种算法生成的,一种算法会生成公钥和私钥两把钥匙,通过ssh传递出去的钥匙实际上是ssh-host-key.pub这把。
为了防止在第一次传输公钥的过程中就遭受中间人欺骗,可以通过U盘将这把钥匙拷贝过去。
3、密钥使用
可以选择将密钥删除,但是重启服务后即可自动恢复,恢复过后的公钥和私钥与之前并不会相同,如果还有之前登录的用户保存有该主机的公钥信息,并且还去用于登录,则会提示对方密钥已发生改变,无法进行连接,此情况可能是遭受到了中间人攻击,也可能是真的密钥发生了改变,可选择将旧密钥删除重新利用新密钥进行连接。
正常情况下,利用ssh客户端连接ssh服务器端,有服务器端维护两把钥匙,并且将公钥发送至客户端,做ssh互信关系时,则由客户端维护两把钥匙,发送一把公钥至服务器端。
4、文件信息说明
etc/ssh/文件夹中,ssh-config是给客户端使用的配置文件,即我去连接他人时用的文件,sshd-config则是给服务器端用的配置文件。
其中字段说明:PasswordAuthentication yes/on//用于设定是否开启密码认证,ssh支持密码认证和密钥认证,两种方式互不干涉。
采用密钥认证,可对公钥进行拷贝,第一次需要通过密码获取密钥。
ssh互信就是指连接他人时不用密码认证而使用密钥认证,并且再次登入不需要输入登录信息,Linux下默认不安装telnet客户端及服务端。

发布了24 篇原创文章 · 获赞 20 · 访问量 3770

猜你喜欢

转载自blog.csdn.net/Dreamsi_zhang/article/details/105235715