远程登陆服务——SSH
*知识点:
1.SSH协议的概念
2.公钥和私钥的原理
*运维的技能点:
1.远程登陆ssh命令
2.远程拷贝scp命令
*SSH公钥无密码登录流程
1.客户端生成密钥对
将生成的公钥传送到服务器
服务器将客户端的公钥放到信任名单
2.客户端登陆服务器不需要密码
SSH是什么?
网络服务协议种类很多,如FTP、POP、Telnet 等,然而这些协议都是在网络上用明文传输口令和数据,别有用心的人很轻易就能截获这些口令和数据,因此它们在互联网环境中具有极大的 安全隐患。SSH ( secure shell)也是一种网络协议, 用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
SSH是互联网安全的一个基本解决方案, 目前已经成为Linux系统的标准配置。即使是最小化系统,也默认安装SSH服务程序,并且设置为开机启动,SSH 的通信端口22在防火墙设置中也被放行。
远程登陆:
1.使用Windows10远程登陆Ubuntu系统
1.1安装ssh客户端,我们使用PuTTY(免费的)
1.2登陆成功
2.Ubuntu远程登陆Ubuntu
1.在Ubuntu上开启SSH服务
1.1打开Terminal终端, "sudo su" 切换到root账户
1.2安装openssh-server
输入“apt-get install opensssh-server"进行安装。
ssh-server配置文件在/etc/ssh/sshd_config,可以在这定义SSH的服务端口,默认端口是22。
可以使用以下命令停止/启动SSH服务:
/etc/init.d/ssh stop
/etc/init.d/ssh start
判断ssh-server是否正常启动:
ps -e | grep ssh 如果显示的进程中有sshd服务,就表示正常启动了。
检查sshd服务的状态:
service sshd status
scp命令的使用
Linux中的复制命令为cp,是copy的简写,用于单机上将某个文件或目录复制一份到指定路径。那么在网络中,是否可以实现cp命令的效果呢?也就是说,能否在不同主机之间实现文件的传输。scp命令可以做到,它是基于ssh登录,安全的文件复制( security copy)。 要把liweikuan主机家目录中的文件“123.txt" 传输到远程lwk主机的目录/home/lwk/桌面,可以做如下实验。首先查看liweikuan主机文件内容,在/home/liweikuan 文件夹下存在文本文件“123.txt", 内容为“Hello everyone" ;在lwk主机的目录/home/lwk/桌面 下查看没有该文件。
scp命令的基本格式为:
scp [可选参数] file_source file_target
scp命令实现liweikuan主机和lwk主机的文件传输:
在lwk主机上查看/home/lwk/桌面,实现成功复制。
公钥(无密码验证)登录
SSH命令的安全性之一表现在, 远程登录时需要输入目标主机的登录密码。但在生产过程中 也会带来一些麻烦, 例如自动化运维时需要远程密码登录,则要人工干预,只能管理员手动输人密码才能继续,不能实现完全的自动化。如果这个流程是在凌晨进行,那么自动化运维就会被打断。如何解决这个问题?要从公钥和私钥的原理上来说明。
公钥和私钥就是俗称的不对称加密方式,是对称加密(使用用户名与密码)方式的提高。公钥,可以通过电子邮件发布,也可以通过网站下载,用来加密或验章。私钥,需要非常小心地保存,用来解密或签章。简单地说,(用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密)。举个简单的加密邮件的例子,A用公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。B收到邮件后,用私钥就可以解密,就能看到内容。
所以,在客户端A上生成公钥和私钥的密钥对,将公钥传送在服务器B或C上以供加密,将私钥留在主机A上,对内容进行解密。那么,从A登录B或C将不需要密码验证,原理如图所示。
代码实现如下,1.客户端liweikuan生成密钥对:
2.将liweikuan主机生成的公钥传送到主机lwk
主机lwk将主机liweikuan的公钥放入信任名单
主机liweikuan登陆主机lwk不需要密码