CentOS进行ssh免密码登录的配置
Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。
SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文主要介绍OpenSSH免费开源实现在Ubuntu中的应用,如果要在Windows中使用SSH,需要使用另一个软件PuTTY。
SSH的安全机制
SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。
传统的网络服务程序,如FTP、Pop和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。
但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:
第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。
第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。
SSH的安装
SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端。
ssh
利用如下命令确认电脑上是否安装了服务端
ssh localhost
查看SSH端口是否默认端口
head -20 /etc/ssh/sshd_config
如图所示,Port未设置,开放端口为默认端口22
如果在其他电脑无法连接,请查看防火墙相关配置
CentOS默认是安装了ssh的,无需再次安装,如果未安装可以执行以下指令进行安装
yum -y install openssh
yum -y install openssh-clients
yum -y install openssh-server
口令登录
默认采用root登录
ssh hostname
ssh 192.168.0.111
如使用其他用户需要指定用户名
ssh username@hostname
ssh username@192.168.0.111
如端口不是默认端口,则需增加端口参数
ssh -p 2345 hostname
ssh -p 2345 192.168.0.111
ssh -p 2345 username@hostname
ssh -p 2345 username@192.168.0.111
首次连接会出现提示,意思是,该远程主机的真实性无法确定,输入yes即可进入密码输入环节
输入正确的密码即可连接到远程服务器
免密码登录
每次登录远程主机都需要输入密码不仅不方便,也不安全,我们可以通过公钥的方式进行免密登录。
免密的原理是:客户端生成自己的密钥对,并将公钥发送给服务器。服务器收到连接请求时,用客户端的公钥加密一随机字符,返回给客户端,客户端用自己的私钥解密后将该字符串发给服务器验证,如果成功则可以登录。
1。在本机生成公钥+私钥
ssh-keygen -t rsa #-t rsa表示使用rsa非对称加密算法
输入指令后,需要输入密钥存放位置,以及私钥密码,我们不设置,直接三次回车即可
2。将公钥发送给服务器
ssh-copy-id root@192.168.137.111
执行上述指令后,会要求我们输入该用户的密码进行验证,我们输入密码后,服务器验证密码正确便会将该公钥保存至/root/ .ssh/authorized_key
再次连接服务器,不用输入密码即可连接并执行指令
免密钥登录的用途
1。堡垒机
在公司机房设置堡垒机,并设置堡垒机免密码登录机房中部分Linux主机,方便运维人员的权限控制,且保证各Linux主机密码不外泄
2。远程部署
通过nohup+command的方式,运维平台可以非侵入式的执行远程安装、维护等操作