概述
目录
SSH安全协议介绍
使用sshd服务程序实践操作
一、使用ssh服务远程登录
二、禁止以root身份登录
三、使用安全密钥免密登录
scp远程传输命令
使用scp命令实操
SSH安全协议介绍
安全外壳协议SSH是Secure Shell的缩写,默认端口是22号端口,SSH由IETF的网络小组(Network Working Group)所制定;SSH是建立在应用层的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来迅速扩展到其他操作平台。SSH在正确使用时可以弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台都可以运行SSH。
SSH是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。在此之前,一般使用FTP或Telnet来进行远程登陆。但是因为FTP和Telnet都是以明文的形式在网络中传输账户密码和数据信息,所以很不安全,很容易受到黑客发起的攻击。
SSH有两个版本,SSH1和SSH2,在经过更新之后的SSH2更加安全,它提供更好的保护,防止攻击者和窃听者,支持更强大的加密算法,并对SSH协议进行了大量常规改进。
想要使用SSH协议来远程管理Linux系统,就需要配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,使用起来方便快捷,且能提供两种安全的验证方法:
基于口令的验证 —— 用账户和密码来验证登陆。
基于密钥的验证 —— 需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并于服务器中的公钥比较。(免密登录)
以上两种方法中,基于密钥验证的方式安全性更高,因为基于密钥验证方式使用了非对称加密技术(一般用RSA加密算法)安全性非常可靠,登陆过程中需要使用密钥对,大概流程是:
1.主机A需要登录到主机B,A先在本机生成一个密钥对,然后手动将公钥发送给B。
2.当有主机(A)向B发送登录请求时,B收到请求但B不知道是谁想登录,它就会随机生成一串字符用A的公钥进行加密发给想登录的主机。
3.A收到B发来的字符,用自己的私钥解密,再发送给B。
4.B收到并且核对确认无误后就知道是A想登录,就会通过登录请求,即登录成功。
图示:
使用sshd服务程序实践操作
下面用两台虚拟机来进行实验操作,虚拟机均为Linux-RHEL7系统
ssh命令格式为:ssh [参数] 用户@主机IP地址
常用参数:
-p 指定远程主机端口
-V 显示版本
-C 压缩所有数据
-4 只使用IPv4地址
-6 只使用IPv6地址
虚拟机1:命名为server,IP:192.168.1.1/24
虚拟机2:命名为client,IP:192.168.1.2/24
首先保证两台机子能互相ping通
一、使用ssh服务远程登录
在RHEL7系统中,sshd服务程序是默认安装开启和通过的
在client上操作:
此时已经使用ssh登录成功
二、禁止以root身份登录
管理员身份的权限是最大的,如果使用root身份登陆会对主机很不安全,所以可以通过修改配置文件来禁止以root身份登录
在虚拟机server中,进入主配置文件”/etc/ssh/sshd_config“,在命令模式下输入"set nu"显示行号,然后按i进入插入模式,找到第38行把#PermitRootLogin yes参数前的#去掉并把yes改成no,这样server就禁止以root远程登陆了
vim /etc/ssh/sshd_config //进入主配置文件
保存退出后重启服务程序
systemctl restart sshd //重启sshd服务程序
然后在client上以root身份登录server进行测试:
server已经拒绝以root身份登录
三、使用安全密钥免密登录
ssh-keygen是SSH服务下的生成,管理,转换认证密钥的命令工具,有两种密钥类型:rsa和dsa
ssh-keygen常用参数:
-t 指定生成密钥类型(默认rsa)
-f 指定生成密钥的文件名(默认id_rsa(私钥)、id_rsa.pub(公钥))
-P 提供旧密码
-N 提供新密码
-b 指定密钥长度(默认2048位)
1.先在server上创建一个用来登录的用户“bob”,密码:123456
2.在client上生成一个密钥对
然后可以查看一下已经生成的公钥和私钥:
3.将client上生成的公钥文件发送至server
4.修改server的配置文件,使其拒绝口令验证登录的方式,只允许密钥验证登录
进入配置文件后,找到第65行将“PasswordAuthentication yes”改为“PasswordAuthentication no”,保存退出后重启服务
参数 | 作用 |
---|---|
PermitEmptyPasswords no | 是否允许空密码登录 |
PasswordAuthentication yes | 是否允许密码验证 |
PermitRootLogin yes | 是否允许root身份直接登录 |
Protocol 2 | SSH协议版本号 |
Port 22 | 默认的sshd服务端口 |
MaxAuthTries 6 | 最大密码尝试次数 |
MaxSessions 10 | 最大终端数 |
StrictModes yes | 当远程用户的私钥改变时,直接拒绝链接 |
ListenAddress 0.0.0.0 | 设定sshd服务器监听的IP地址 |
HostKey /etc/ssh/ssh_host_key | SSH协议版本为1时,des私钥存放位置 |
HostKey /etc/ssh/ssh_host_rsa_key | SSH协议版本为2时,rsa私钥存放位置 |
HostKey /etc/ssh/ssh_host_dsa_key | SSH协议版本为2时,dsa私钥存放位置 |
vim /etc/ssh/sshd_config //进入主配置文件
systemctl restart sshd //重启sshd服务程序
5.修改完成后可以进行登录测试
可以看到无需密码直接登录到server上了,可以查看IP地址和从client传送来的公钥文件,公钥存放位置在/home/bob/.ssh/authorized_keys
scp远程传输命令
scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令。且scp不仅能通过网络传送数据,而且所有的数据都将进行加密处理。如果想把文件通过网络从一台主机传递到其他主机,这两台主机都是Linux系统的话,此时使用scp命令就可以轻松的完成文件传递。
在使用scp命令把文件复制到远程主机时,首先要以绝对路径的形式写清本地文件的存放位置。如果要传送整个文件夹内的所有数据,还需要额外添加参数-r进行递归操作,然后加上要传送到的远程主机的IP地址,远程服务器便会要求进行身份验证,可以使用“用户名@主机地址”的参数格式。最后需要在远程主机的IP地址后面添加“:”号,并在后面写上要传送到远程主机的哪个文件夹中。只要参数正确并且成功验证了用户身份,就可以开始传送工作。除了远程发送文件,scp还可以从远程主机下载文件到本机。
scp命令格式为:
发送:scp [参数] 本地文件 远程账户@远程IP地址:远程目录
下载:scp [参数] 远程用户@远程IP地址:远程文件 本地目录
常用参数:
-v 显示详细的连接进度
-P 指定远程主机的sshd端口号
-r 用于传送文件夹
-6 使用IPv6协议
使用scp命令实操
发送文件:
先在client创建一个文件,再将文件发送到远程主机server上的bob用户
从server上查看
下载文件:
先在server上创建一个文件
再从client上下载
这里因为client和bob用户已经通过密钥验证,所以不需要密码,如果是需要发送给server上root用户或者别的用户,就要进入配置文件将65行的no改为yes,即允许口令验证,否则就发送不了,系统会提示没有权限。
最后
以上就是可耐奇迹为你收集整理的Linux系统使用SSH服务和SCP命令SSH安全协议介绍使用sshd服务程序实践操作scp远程传输命令的全部内容,希望文章能够帮你解决Linux系统使用SSH服务和SCP命令SSH安全协议介绍使用sshd服务程序实践操作scp远程传输命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复